srand(n)对任意n给出相同的值

  • 本文关键字:任意 srand c++
  • 更新时间 :
  • 英文 :

void generator() 
{
int n = <some number>;
srand(n);
int first = randint(9);
digits.push_back(first);
while (digits.size() < 4) 
{
bool flag = true;
int num = randint(9);
for (int j = 0; j < digits.size(); j++) 
{
if (num == digits[j]) 
{
flag = false;
break;
}
}
if (flag == true) 
{
digits.push_back(num);
}
}
for (int i : digits)
{
cout << i << " ";
}
}
int main() 
{
generator();
}

该代码应该在执行时生成4个随机且不同的数字

randint(x(是一个函数,它在0和x之间的任何位置生成一个随机值。

虽然我的数字是不同的,但它们不是随机的。无论我在srand((中输入什么值,我都会得到相同的四位数字:

2 4 5 1


如果我做错了什么,请帮帮我

std::experimental::randintstd::experimental::reseed耦合以设置每个线程的种子:srand对生成的输出没有影响。您可能会发现,randint会自动设置一个常量值作为种子,该常量值可以解释您的输出。由于它从未成为C++标准的一部分,我无法肯定地进一步评论。

这都是非标准的,都是不可移植的,最好从C++11中避免,现在我们有了<random>

最新更新