标准库 中 int
rand(void)函数是真正的随机数生成函数,但是每次用rand()需要用srand设置的种子来产生随机数。如果你不调用srand,系统会在rand之前自动加一个srand(1),但是这样一来种子就是固定的了,随机数也是固定的,所以rand()也称伪随机数。
为了达到真正的随机,那么关键害的是srand这个函数,所以为了每次srand()参数都不一样,我们通常用time库的东西来做参数
time_t time(0):time_t 被定义为长整形,返回从1970年1月1日到现在的时间用秒表示。参数一般为:
(unsigned)time(0)或者(unsigned)time(NULL)后面乘上某个合适的整数。
例如,srand((unsigned)time(NULL)*10)
rand()返回0到
RAND_MAX的值,RAND_MAX是标准库定义的字符常量,不同编译器不同,最小32767,最大2147483647。如果你想得到a到b的值,通常都是用rand()%(b
- a + 1) + a.如果是10到20,rand()/11,得到0~10,再加上10就正好啦
好到这就差不多理解了原理,下面是具体实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include //时间的头文件
#include //srand()头文件
#include
voidmain()
{
inti,j;
srand ( time (0));
//种子设定
for (i=0;i<10;i++)
{
j=1+( int )(10.0* rand ()/(RAND_MAX+1.0));//实现随机
printf ( "%d" ,j);
}
}
下面是time函数的简介。
函数名称: |