我想在0到20之间生成2个随机数
int one = rand() % 20;
它给了我一个稳定的值,即1 ...
我错过了什么吗?
答案 0 :(得分:2)
您必须为随机数提供种子。
srand( time(NULL) );
int num1 = rand() % count;
int num2 = rand() % count;
1到20之间的随机数
int num = rand() % 20 ;
if( num == 0 )
num += 2;
else if( num == 1 )
++num ;
答案 1 :(得分:2)
如果count
是一个,就会发生这种情况
如果count
不是一个,则代码为works perfectly。
但是,如上所述,您需要通过调用srand
来设置非确定性种子。
答案 2 :(得分:1)
要在指定范围[min,max]中生成随机数,请执行以下操作:
min + (int)((double) rand() / RAND_MAX * (max - min + 1));
方法
min + rand() % (max - min + 1);
可能更快,但根据RNG,它可能无法正常分配值。
正如其他人所提到的,如果您希望每次运行都有不同的序列,请在程序开头执行srand
一次。