2011-04-03 125 views
2

如何在C++中一次性生成不同的随机数?如何在C++中一次生成不同的随机数?

现在我用

while (flag) 
{ 
    .... 
    srand(time(NULL)); 
    int rndSig = rand() % 10 + 1; 
    ...... 
} 

但在某一时刻所有的数字都是平等的。我如何在while循环中生成不同的数字?

+1

你的意思是什么都平等。你有什么会产生[1-10]之间的随机数字。 – 2011-04-03 08:00:37

+0

@Gunner:不会的。在rand()之前使用srand()会导致在短时间内生成的所有数字都相同。 – jv42 2011-04-03 08:06:13

回答

7

将srand移到while循环的外部。你只需要调用它一次,rand()保持静态。

+0

+1直接提及保存状态。 :) – Xeo 2011-04-03 08:04:46

5

在使用它之前,不要直接给随机数发生器播种。在循环之前使用srand一次。

4

像这样:

srand(time(NULL)); 
while (flag) 
{ 
    .... 
    int rndSig = rand() % 10 + 1; 
    ...... 
} 

如果你需要不同的分布,或更好的随机性,你需要使用一个库。