我基本上试图建立一个赌场游戏理念的计算机模拟,使用标准的52张牌。
我想一次运行1000场比赛。
之前我曾经使用过srand(time(NULL)),但我认为不可能一次输出1000个不同的随机数序列,是吗?我的看法是,由于所有数字都是同时生成的,所以它们都是相同的。
有没有办法使用第一个生成的随机数来播种1000个新的52个数字序列?
由于
答案 0 :(得分:1)
是的,您可以让您的第一个随机数生成器(以time(NULL)
为单位)输出1000个随机数,每个随机数可用作1000个独立随机数生成器的种子。
答案 1 :(得分:1)
我的感觉是,因为所有数字都是相同的 时间,他们都将是相同的
他们同时不生成。我认为你正在使用for循环?每次迭代都不是 在同一时间“。
你有没有测试过这个理论?
for i = 1 to 1000 do
{
print <time to ms resolution>
print <random number>
}
答案 2 :(得分:0)
使用相同的数字播种将始终导致相同的伪随机数序列。只要您不在迭代之间使用相同的种子重新种子,(子)序列不将是相同的。
答案 3 :(得分:0)
尝试使用srand(time(NULL)*getpid())
播种rand()函数。您要调用1000次的进程的PID应该是系统相关的,并且很有可能彼此不同。
如果您正在为不同的游戏使用线程,请使用threadID而不是getpid()。
如果您愿意,可以一次预先生成所有随机数,然后再使用它们:
int random_numbers[1000];
for (i = 0; i < 1000; i++) {
srand(time(NULL)*(i+1));
random_numbers[i] = rand();
}