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