如果我做错了什么,请帮帮我
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::randint
与std::experimental::reseed
耦合以设置每个线程的种子:srand
对生成的输出没有影响。您可能会发现,randint
会自动设置一个常量值作为种子,该常量值可以解释您的输出。由于它从未成为C++标准的一部分,我无法肯定地进一步评论。
这都是非标准的,都是不可移植的,最好从C++11中避免,现在我们有了<random>
。