随机数和随机数种子

随机数rand(); 随机数种子 srand();

在运行程序代码的时候我们可能会需要大量数据来测试我们的程序是否正确,如果主观输入,缺点很多,如果可以让计算机自动生成数据提供给我们测试就会好很多。

如果你多次运行完代码之后就会发现一个问题,你每次运行过后的结果都是一样的。 在同样位置的数字都是一样的, 无论你什么时候运行 ,你换了电脑也是同样的 。那是因为rand()函数是一个通过一系列计算所得到的函数 ,结果是不变的 。
为了解决这个问题我们要设置一个随机数种子,srand();里面要的参数是一个无符号的整形。rand()默认的随机数种子是1。所以你如果想要每次运行得到的数据不一样 ,只需要改变随机数种子就可以。但是只要随机数种子是一样的,你每次运行过后对应位置的数据就是相同的。
那我们再来想想如何解决一个问题,我们如何让我们每次运行之后的数据都不一样,还不需要我们每次手动改数据,怎么能让srand();括号里的数字每次都变呢,时间啊!时间是一直在变化的,我们用一个获取时间的函数来当做参数。srand((unsigned)time(NULL));这个time()函数获取的是从1970年一月一日零时开始到现在这一刻的秒数,那么当你运行程序的时候,时间的秒数是在变化的,那么你每次得到的随机数也就不一样。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
srand((unsigned)time(NULL));
printf("%d\n",rand());
printf("%d\n",rand());
printf("%d\n",rand());
return 0;
}

当然啦,随机数也可以得到我们想要的范围内的值,这要怎么做呢?
如果想得到 0-9 范围内的随机数 rand()%10;
想得到 0-11 范围内的随机数 rand()%12;
1~10在第一个的基础上+1 也就是rand()%10+1就可以啦。

  • 19
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值