随机布尔值

Ric*_*den 24 c++ random ctime

我正在尝试生成一个在C++中为0或1的随机int.现在,每次运行此代码时都会收到0,我不知道为什么.这有什么问题?

#include <ctime>
#include <cstdlib>

srand(time(0));
int randomval = rand() % 2;
cout << randomval << endl;
Run Code Online (Sandbox Code Playgroud)

Mic*_*ker 151

这被称为运气不好.再试一遍.

  • 你在每次迭代时都调用了`srand()`吗?然后它应该保持相同的数字,直到下一秒. (15认同)
  • 但话说回来,他们可以通过骰子确定随机数...... (4认同)
  • @ 0605002,我明白了.这是成名;-) (4认同)
  • 我在for循环中多次运行了100次.希望你是对的. (3认同)
  • 你说得对,我真的不确定我在想什么。 (2认同)

cgo*_*ain 23

我知道这是一个较老的问题,但我相信这正确地回答了这个问题.

每次运行该代码时都不要重新生成生成器.

通过每次播种到相同的值,你将得到相同的"随机"数字.请记住,这是一个伪随机数生成器,因此根据种子值,将生成一个"随机"数字.所以如果每次你每次都得到相同的数字,你就用相同的数字播种它.

解决方案是在程序执行中只调用一次srand(time(NULL)).然后,每次调用rand()每次都会给你一个不同的数字.