簡體   English   中英

我的隨機數生成器怎么了?

[英]What's wrong with my random number generator?

我只是學習一些C ++,所以我決定制作一個隨機數生成器(數字有多隨機,這真的沒關系)。 大部分代碼是從網絡上復制下來的,但是我的新手眼睛看不到有什么問題,是否可以通過任何方式對此進行調整以給出除“ 6”以外的數字?

#include <iostream>
#include <string>
#include <cstdlib>

using namespace std;
int random_number(int min, int max)
{
    srand((unsigned)time(0));
    int random_num;
    int range=(max-min)+1;
    random_num = min+int(range*rand()/(RAND_MAX + 1.0)); 
    return random_num;
}
int main()
{
    for(int i =0;i < 100;i++)
    {
            cout << random_number(3,10) << endl;
    }
}

不要在random_number()中調用srand()。 這將在每次調用時重新填充隨機數生成器。 對於100個通話,您很可能在每個通話中獲得相同的種子,因此編號也相同。

在循環之前添加srand

 srand((unsigned)time(0));
  for(int i =0;i < 100;i++)
    {
        std::cout << random_number(3,10) << endl;
    }

問題是您每次都使用srand。 CPU是如此之快,以至於它可以在一秒鍾內執行所有這些代碼,因此您每次都獲得相同的種子。

將srand移出循環,僅調用一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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