[英]Random function always returns 1
我的隨機 function 總是返回“1”而不是......任何東西
它應該返回“0”或“1”
int rnd() {
unsigned int num0 = rand();
if(num0 < 32767.5) {return 0;}
if(num0 > 32767.5) {return 1;}
}
int chk;
bool _True = true;
int main(void) {
while(_True) {
chk = rnd();
printf("%i\n", chk);
//if(chk == 1) {printf("%i\n", chk); _True = false;}
//if(chk == 0) {printf("%i\n", chk); _True = false;}
}
}
首先,rand() 給出基於種子的偽隨機數。 如果在 rand() 之前不調用 srand(),那么每次運行程序都會得到相同的隨機數序列。
其次,rand() function 返回一個 0 到 RAND_MAX 范圍內的偽隨機數。
RAND_MAX 是一個常量,其默認值可能因實現而異,但保證至少為 32767。
您似乎假設 RAND_MAX 是 32767.5 的兩倍?
我建議先調用 srand() 然后測試 RAND_MAX / 2,或者將你的值設置為 rand() % 2。
(您可以通過打印 rand() 返回的內容和/或查看 rand() 的文檔來確定這一點。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.