用C语言生成随机数
我想生成2个介于0和20之间的随机数用C语言生成随机数,c,random,C,Random,我想生成2个介于0和20之间的随机数 int one = rand() % 20; 它给我一个稳定值,即1 我遗漏了什么吗?你必须给随机数加一个种子 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 ) ++n
int one = rand() % 20;
它给我一个稳定值,即1
我遗漏了什么吗?你必须给随机数加一个种子
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 ;
你必须给随机数一个种子
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 ;
如果
count
为1,则会发生这种情况。如果
count
为非一,则表示您的代码
但是,如前所述,您需要通过调用
srand
来设置非确定性种子,如果count
为1,则会发生这种情况。如果
count
为非一,则表示您的代码
但是,如前所述,您需要通过调用
srand
来设置非确定性种子,以生成指定范围[min,max]内的随机数,执行如下操作:
min + (int)((double) rand() / RAND_MAX * (max - min + 1));
方法
min + rand() % (max - min + 1);
可能更快,但它可能不会根据RNG提供值的正态分布
正如其他人所提到的,如果您希望每次运行的顺序不同,请在程序开始时执行一次
srand
要生成指定范围[min,max]内的随机数,请执行以下操作:
min + (int)((double) rand() / RAND_MAX * (max - min + 1));
方法
min + rand() % (max - min + 1);
可能更快,但它可能不会根据RNG提供值的正态分布
正如其他人所提到的,如果您希望每次运行的顺序不同,请在程序开始时执行一次
srand
您的代码运行良好。我想他问的是count的值……你调用了自己的函数rand()
,而不是C库版本。你的代码运行得很好。我想他问的是count的值……你调用的是自己的函数rand()
,而不是C库版本。如果我想要1到20之间的随机数呢<代码>如果在调用srand()之前调用了rand(),则生成的序列应与第一次调用srand()时的序列相同,种子值为1。@Mahesh-您不应该在每次调用rand之前为随机数生成器种子。只要一次就可以了(而且更好)。@SLaks:当你需要一个确定的(即可复制的)伪随机数序列时,你可以使用相同的种子。但是当你的程序只打印一个随机数时,你需要一个随机种子。@SLaks-OP说它给我一个稳定值,即1…
。所以,需要给随机数生成器添加种子。如果我想要1到20之间的随机数呢<代码>如果在调用srand()之前调用了rand(),则生成的序列应与第一次调用srand()时的序列相同,种子值为1。@Mahesh-您不应该在每次调用rand之前为随机数生成器种子。只要一次就可以了(而且更好)。@SLaks:当你需要一个确定的(即可复制的)伪随机数序列时,你可以使用相同的种子。但是当你的程序只打印一个随机数时,你需要一个随机种子。@SLaks-OP说它给我一个稳定值,即1…
。因此,需要给随机数生成器添加种子。Vinod K可能每次运行程序时都需要不同的随机数。在这种情况下,他肯定应该使用srand为它播种。Vinod K可能希望在每次运行程序时使用不同的随机数。在这种情况下,他肯定应该使用srand来为它播种。