随机数:0或1

时间:2014-02-05 14:15:04

标签: c random

我有这段代码:

srand(time(NULL));
int n = rand() % 1 + 0;
printf("%d\n", n);

但是,如果我把它(不是srand(time(NULL)))放在例如循环中,它只生成一个0的序列。 对于0到1之间的随机数还有另一种实现,或者我忘记了什么?

4 个答案:

答案 0 :(得分:21)

如果您的意思是0 1,那么您的%会有所帮助,但您的意思是% 2(或& 1)。当然,+ 0仍然是毫无意义的,不知道你的目标是什么。对于0或1的整数结果,只需执行:

const randomBit = rand() % 2;

编译器可能会"strength-reduce"指向:

const randomBit = rand() & 1;

此外,请确保您只在程序中拨打srand() 一次,否则它将无法达到您期望的效果。

答案 1 :(得分:10)

如果您想要0或1,只需执行

int n = rand() % 2

如果rand返回甚至你会得到一个0,如果它很奇怪你会得到一个1。

答案 2 :(得分:1)

int n = rand() % 1 + 0;  

将始终生成0rand() % 10 rand()%a生成0a-1之间的数字。

答案 3 :(得分:-1)

std::srand(time(0)); //Randomise seed initialisation
for (int rows = 0; rows < n; rows++) {
    int randNum = rand() % 2;
}