我有這樣的代碼:隨機數:0或1
srand(time(NULL));
int n = rand() % 1 + 0;
printf("%d\n", n);
但是,如果我把它(不srand(time(NULL))
)在例如一個循環,它僅產生0 序列有0和1之間的隨機數的另一個實現,或者我忘記了什麼?
我有這樣的代碼:隨機數:0或1
srand(time(NULL));
int n = rand() % 1 + 0;
printf("%d\n", n);
但是,如果我把它(不srand(time(NULL))
)在例如一個循環,它僅產生0 序列有0和1之間的隨機數的另一個實現,或者我忘記了什麼?
如果你的意思是0 或 1,您%
有一定道理,但你的意思是% 2
(或& 1
)。當然,+ 0
仍然是毫無意義的,不知道你在那裏瞄準什麼。對於0或1的整數結果,只是做:
const randomBit = rand() % 2;
編譯器可能會"strength-reduce",爲:
const randomBit = rand() & 1;
此外,還要確保你只在你的程序,或者致電srand()
一次不會有你期望的效果。
不,我不想浮動值,我只想要0或1! –
int n = rand() % 1 + 0;
會產生0
總是作爲rand() % 1
給出0
(rand()%a
0
之間產生數a-1
)。
是srand(time(NULL));是在循環之外,我指的是另外兩條指令。 –
如果你想爲0或1,只是做
int n = rand() % 2
如果什麼蘭特回報甚至你會得到一個0,如果它是奇怪的,你會在這裏得到一個1。
srand(time(0)); //Randomize seed initialization
for (int rows = 0; rows < n; rows++) {
int randNum = rand() % 2;
}
蘭特()%1始終爲0,因爲什麼蘭特回報始終是整除1 –
的方式+ 0總是添加0,因此在這裏沒有任何影響。 –