使用srand设置随机数种子,用来每次获取不一样的随机数

    以前一直没有仔细想过为什么如何设置随机数种子?设置随机数种子有什么用,今天有时间,拿出来分析一下:

    直接通过rand() 函数获得随机数每次都会是一样,例如,第一次程序运行的时候是8,第二次运行还会是8;后来发现有一个可以设置随机数种子的函数:srand() ,srand()的原型:

    void srand(unsigned seed);

   这个函数需要提供一个种子,使用相同的种子的话,后面的rand函数在程序第二次启动的时候就会出现一样的随机数。

例:

 1 #include "stdlib.h"
3 #include "stdio.h"
4
5 int main(void)
6 {
7    int i;
9 srand(1);
10
11 for(i = 0;i < 10; i++)
13   {
14    printf(" %d",rand()%1000);
16 }
17 return 0;
18 }

      这段代码每次启动都会输出一样的随机数:41  467 334 。。。。。 ,这样做事不符合我的初衷的,由此我想到,是不是每次程序运行srand() 时,设置的种子可以是不一样的呢,所以我使用了时间函数:

 1  #include "stdlib.h"
2 #include "stdio.h"
3 #include "time.h"
4
5 int main(void)
6 {
7   int i;
8 time_t temp_time;
9 srand((unsigned)time(&temp_time));
10
11 for(i = 0;i < 10; i++)
12   {
13    printf(" %d",rand()%1000);
14 }
15 return 0;
16 }

这样,每一次启动程序输出的随机数都是不一样的了!


转载于:https://www.cnblogs.com/liuyonglong37/archive/2012/02/02/2335854.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值