[英]Need help understanding better RNG
在這篇文章的最后一個示例中( http://www.daniweb.com/software-development/cpp/threads/1769/c-random-numbers ),作者聲稱這是產生隨機數的更好方法。 但是,我讀了這一行,仍然對要做什么感到困惑。
random_integer = lowest+int(range*rand()/(RAND_MAX + 1.0));
我測試了此代碼,但每次都保持產生“ 1”的值。
我希望有人可以提供澄清。
假設您要生成[a, b)
范圍內的隨機整數。 這可以通過生成范圍為[0, b - a)
隨機整數並添加a
:
random_integer = a + rand(0, b - a)
我們可以使用普通的rand()
[0, RAND_MAX]
范圍內的隨機整數。 現在,我們需要縮放此間隔以適合[0, r)
, r = b - a
。 由於RAND_MAX
是rand()
返回的最大值,因此rand() / (MAX_RAND + 1.0)
在[0, 1)
。 因此, r * rand() / (MAX_RAND + 1.0)
在[0, r)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.