在stdlib.h中,srand和rand这两个函数与伪随机数的生成有关。 在c语言中,随机数表包含许多列,srand函数根据其参数(unsigned类型)获取种子),并根据种子设置从哪个列获取随机数。 rand没有参数。 返回对应的随机数。 如果种子相同,则从同一列的随机数中选择,rand在每次选择时自动选择下一个随机数。 以上内容非常抽象,但可以通过以下步骤明确说明其原理。
#包含
#包含
输入主(语音) )。
{
int seed,I;
for (; )
{
printf (pleaseinputanumbertosettheseed : );
扫描(' % d ',seed );
if(seed==0) )
布雷克;
for(I=0; i 5; I )
printf(%d(t ),rand );
printf((n ) n ) );
}
返回0;
}
以下是执行结果:
可以看到,如果srand设置的种子相同,则是从同一列的随机数中选择的。 那么,如何生成真正不同的随机数呢?
问题的关键是种子的选择。 我们的目的是在不同的时间生成不同的随机数。 因此,如果有只与时间有关的数量,可以通过将其传递给srand来实现目的。 这样的函数位于time.h头文件中。 函数名称为time。 调用time时,将返回与时间相关的整数。 具体使用方法如下。
/*
* rand2.c
* to create a list of random numbers。
*/
#包含
#包含
#包含
#define MAXNUM 100
输入主(语音) )。
{
int i;
srand () unsigned (time ) ) null );
for(I=0; i 10; I )
printf('%dt ',rand(%maxnum ) );
printf((n );
返回0;
}
执行效果如下。