C++怎么产生随机数

2024年11月18日 14:48
有2个网友回答
网友(1):

使用 rand 函数产生。例子:

// crt_rand.c
// This program seeds the random-number generator
// with the time, then displays 10 random integers.
//

#include
#include
#include

int main( void )
{
int i;

// Seed the random-number generator with current time so that
// the numbers will be different every time we run.
//
srand( (unsigned)time( NULL ) );

// Display 10 numbers.
for( i = 0; i < 10;i++ )
printf( " %6d\n", rand() );

printf("\n");

// Usually, you will want to generate a number in a specific range,
// such as 0 to 100, like this:
{
int RANGE_MIN = 0;
int RANGE_MAX = 100;
for (i = 0; i < 10; i++ )
{
int rand100 = (((double) rand() /
(double) RAND_MAX) * RANGE_MAX + RANGE_MIN);
printf( " %6d\n", rand100);
}
}
}

网友(2):

rand()这个函数的原理是伪随机数生成器,利用折公式为:RAND=(RAND_SEED*123+59)%65536,给这个函数一个大于等于0小于65536的数字RAND_SEED,便可以得到一个数字RAND,这个数字便是随机数,再次调用时再把SEED作为RAND_SEED又可得到一个RAND,这样便可以得到另一个随机数,如此下去....
做下说明,这个函数对于每一个初始参数,都可以通过迭代取遍0到65535中的每一个数,不信可以试试。这样的函数并不是唯一的,分别是什么可以去百度一下,我就不列举了。 很明显这个函数产生的数字并不是完全随机,所以叫伪随机数生成器,它的随机性完全依赖于初始化种子,所以一般在调用之前要初始化一个随机数种子。如果想要产生真正的随机数,还要用到其它的方法。
另外用的比较多的随机数生成方法为获取系统时间,这样相对来说更加随机一些.