C语言rand()函数重置种子问题
今天写了一个小程序,生成100个0到10的随机数,但一运行就生成了同样的数,诡异的是调试时生成的数还都是随机的,源代码为
int nums[SIZE];for (int j = 0; j < SIZE; j++){srand(time(0));//重置种子int i = rand()% 10+1;//获得0~10的随机数nums[j] = i; }
经过翻查C primer plus后,发现随机数的运行原理为rand函数生成伪随机值,但这个随机值是有规律的。不过我们可以通过重置种子函数中的静态变量,去更改rand函数中的值,就可以生成看似真正的随机数。这里重置种子用的是time.h中的time函数,time函数返回一个time_t的值,可运算,由于时间是一直在变的,所以就可以自动重置种子,生成新的随机数。但是如果把srand函数放在一个迭代很快的循环里,那么时间几乎是不变的,自然而然就起不到重置种子的作用,最坑的是,如果你f分步调试,就根本查不出来bug!因为调试时程序运行的时间大大超过了正常运行的时间!!这里time函数才会真正的起作用。更改后,源代码为:
int nums[SIZE];srand(time(0));//重置种子for (int j = 0; j < SIZE; j++){int i = rand()% times+1;//获得0~10的随机数nums[j] = i; }
输出结果为:
C语言rand()函数重置种子问题相关推荐
- c语言rand函数时间种子,C语言中以时间为种子,产生随机数的函数
srand((unsigned)time(NULL) +++++++++++++++++++++++++++++++++++++++++++++++++ 以时间为种子,其实再产生随机数的函数中都会加, ...
- C语言(rand函数)
C语言(rand函数) (2006-09-24 20:41:59) 转载 srand()就是给rand()提供种子seed 1,先看一个例子 #include <iostream> ...
- C语言rand()函数产生随机数详解
C语言rand函数产生随机数详解 1.rand函数的原型,功能和界限 2.用rand函数获取随机数 3.随机数生成原理 1.rand函数的原型,功能和界限 rand函数的原型: #include &l ...
- c语言rand函数_C语言随机函数学不明白?一知识一案例,全面解析C语言随机函数
前言 本文主要讲解C语言的随机函数,学习随机函数将由此拉开序幕,亲爱的准备好了没? 随机数 随机数主要是通过rand()函数产生的,rand() 函数可以随机产生一个正整数,它会产生一个无符号整数,范 ...
- C语言 rand函数(随机)
rand函数不是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子.如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand().而使用同种子相 ...
- c语言rand函数的作用,详解C语言中rand函数的使用
前言 我们在编程实现算法的过程中,往往需要使用到随机数.由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?).所以计算机生成的是伪随机数,供我们使用. 我们使用C语言的ran ...
- C语言 rand函数,srand函数 生成随机数用法详解
与随机数有关的两个函数,srand() 和 rand(),这两个函数都包含"stdlib.h"头文件里 srand()函数是随机数发生器,使得每轮产生的随机数列都不相同. ...
- c语言rand函数的使用范围,C random C ++rand函数应用
random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过.但在C语言中int random(num)能够这样使用,它返回的是0至num-1的一个随机数. 可改用C++下的rand函数 ...
- C语言rand()函数解析
C语言的rand()函数位于<stdlib.h>.该函数可以生成一个取值为0-32767的伪随机数.先看一下函数的实现. unsigned long int next = 1;int ra ...
最新文章
- 【笔记】重学前端-winter
- python回调函数实例详解_Python回调函数用法实例详解
- 从零开始-小程序采坑记录
- 一、策略模式(Strategy Pattern)
- 【资源下载】《Pytorch模型训练实现教程》(附下载链接)
- 三星Galaxy S22 Ultra真机首曝:颜值与实力并存堪称完美
- bat ping 返回值_专科生可以进bat大厂吗?
- 记一次zookeeper连接数暴增事件
- 遗传算法优化模糊控制规则
- BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草
- 家庭宽带上网_03_IP城域网
- 【转载】ubuntu16.04 无线/Wifi 上网速度慢的解决方法
- canvas绘制竖排的数字_微信小程序利用Canvas绘制图片和竖排文字详解
- 防骗指南-QQ微信仿冒诈骗
- 业务规范之springboot整合swagger2
- 请帮忙扩写韩翃“寒食”这首诗
- 实验三十六 Windows Server 2012 RDS桌面虚拟化之七VDI虚拟桌面的更新和维护
- Ardupilot环境搭建
- mysql 值很少的索引_关于 Mysql 字段值分布很少的字段要不要加索引的问题.
- 国内开源社区有哪些 ?|GitCode