簡體   English   中英

隨機 function 總是返回 1

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM