c语言随机数

一、产生一个C语言随机数需要用到以下函数

1 #include <stdlib.h>
2 
3 int rand(void); //返回一个随机数,范围在0~RAND_MAX之间
4 
5 void srand(unsigned int seed); //用来设置rand()产生随机数时的随机数种子

rand函数返回一个随机数,范围在0~到RAND_MAX之间

用法:

1 生成[x,y]的伪随机数
2 
3 k=x+rand()%(y-x+1)/*k即为所求范围内随机生成的数,rand()%a的结果最大为a-1*/
4 
5 j=(int)(n*rand()/(RAND_MAX+1.0)) /*产生一个0到n之间的随机数*/

 

srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,一般使用srand((unsigned)time(NULL))系统定时/计数器的值作为随机种子。

每个种子对应一组根据算法预先生成的随机数,所以,在相同的平台环境下,不同时间产生的随机数会是不同的如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。

rand()函数默认情况下初始化种子值为1;

 

下面我们产生介于1 到10 间的随机数值,暂时没有设置srand随机数种子(rand()函数默认情况下初始化种子值为1):
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <time.h>  
 4  
 5 int main()
 6 {
 7     int i = 0;
 8     int number = 0;
 9  
10     for (i = 0; i < 9; i++)
11     {   
12         number = 1 + (int)(10.0 * rand() / (RAND_MAX + 1.0));   //产生1-10的随机数
13 
14         printf("%d ", number);
15     }   
16     printf("\n");
17     
18     return 0;
19 }

可以看出每次产生的随机数都一样:
1 [root@localhost 2nd]# ./rand
2 9 4 8 8 10 2 4 8 3 
3 [root@localhost 2nd]# ./rand
4 9 4 8 8 10 2 4 8 3 
5 [root@localhost 2nd]# ./rand
6 9 4 8 8 10 2 4 8 3 
7 [root@localhost 2nd]# 
下面srand()用来设置rand()产生随机数时的随机数种子,使用srand((unsigned)time(NULL))系统定时/计数器的值作为随机种子
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <time.h>  
 4  
 5 int main()
 6 {
 7     int i = 0;
 8     int number = 0;
 9 
10     srand((unsigned)(time(NULL))); //使用srand((unsigned)time(NULL))系统定时的值作为随机种子
11  
12     for (i = 0; i < 9; i++)
13     {   
14         number = 1 + (int)(10.0 * rand() / (RAND_MAX + 1.0));   //产生1-10的随机数
15 
16         printf("%d ", number);
17     }   
18     printf("\n");
19     
20     return 0;
21 }
可以看出每次的结果都不一样:
1 [root@localhost 2nd]# ./rand     
2 9 5 7 10 8 5 3 3 3 
3 [root@localhost 2nd]# ./rand
4 3 5 5 8 7 2 7 1 1 
5 [root@localhost 2nd]# ./rand
6 5 8 1 10 6 1 4 2 2 
7 [root@localhost 2nd]# ./rand
8 2 6 7 6 9 1 6 8 8 

 

posted @ 2016-04-18 11:43  zhangwju  阅读(777)  评论(0编辑  收藏  举报