今天写了一个小程序,生成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()函数重置种子问题相关推荐

  1. c语言rand函数时间种子,C语言中以时间为种子,产生随机数的函数

    srand((unsigned)time(NULL) +++++++++++++++++++++++++++++++++++++++++++++++++ 以时间为种子,其实再产生随机数的函数中都会加, ...

  2. C语言(rand函数)

    C语言(rand函数) (2006-09-24 20:41:59) 转载     srand()就是给rand()提供种子seed 1,先看一个例子 #include <iostream> ...

  3. C语言rand()函数产生随机数详解

    C语言rand函数产生随机数详解 1.rand函数的原型,功能和界限 2.用rand函数获取随机数 3.随机数生成原理 1.rand函数的原型,功能和界限 rand函数的原型: #include &l ...

  4. c语言rand函数_C语言随机函数学不明白?一知识一案例,全面解析C语言随机函数

    前言 本文主要讲解C语言的随机函数,学习随机函数将由此拉开序幕,亲爱的准备好了没? 随机数 随机数主要是通过rand()函数产生的,rand() 函数可以随机产生一个正整数,它会产生一个无符号整数,范 ...

  5. C语言 rand函数(随机)

    rand函数不是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子.如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand().而使用同种子相 ...

  6. c语言rand函数的作用,详解C语言中rand函数的使用

    前言 我们在编程实现算法的过程中,往往需要使用到随机数.由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?).所以计算机生成的是伪随机数,供我们使用. 我们使用C语言的ran ...

  7. C语言 rand函数,srand函数 生成随机数用法详解

    与随机数有关的两个函数,srand() 和 rand(),这两个函数都包含"stdlib.h"头文件里 srand()函数是随机数发生器,使得每轮产生的随机数列都不相同.      ...

  8. c语言rand函数的使用范围,C random C ++rand函数应用

    random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过.但在C语言中int random(num)能够这样使用,它返回的是0至num-1的一个随机数. 可改用C++下的rand函数 ...

  9. C语言rand()函数解析

    C语言的rand()函数位于<stdlib.h>.该函数可以生成一个取值为0-32767的伪随机数.先看一下函数的实现. unsigned long int next = 1;int ra ...

最新文章

  1. 【笔记】重学前端-winter
  2. python回调函数实例详解_Python回调函数用法实例详解
  3. 从零开始-小程序采坑记录
  4. 一、策略模式(Strategy Pattern)
  5. 【资源下载】《Pytorch模型训练实现教程》(附下载链接)
  6. 三星Galaxy S22 Ultra真机首曝:颜值与实力并存堪称完美
  7. bat ping 返回值_专科生可以进bat大厂吗?
  8. 记一次zookeeper连接数暴增事件
  9. 遗传算法优化模糊控制规则
  10. BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草
  11. 家庭宽带上网_03_IP城域网
  12. 【转载】ubuntu16.04 无线/Wifi 上网速度慢的解决方法
  13. canvas绘制竖排的数字_微信小程序利用Canvas绘制图片和竖排文字详解
  14. 防骗指南-QQ微信仿冒诈骗
  15. 业务规范之springboot整合swagger2
  16. 请帮忙扩写韩翃“寒食”这首诗
  17. 实验三十六 Windows Server 2012 RDS桌面虚拟化之七VDI虚拟桌面的更新和维护
  18. Ardupilot环境搭建
  19. mysql 值很少的索引_关于 Mysql 字段值分布很少的字段要不要加索引的问题.
  20. 国内开源社区有哪些 ?|GitCode

热门文章

  1. C语言左旋和右旋代码
  2. 微信小程序开发之——时针-实现(2)
  3. 【Java】FastJson如何返回不带转义字符的json字符串
  4. 酷睿i7 10700什么水平 i7 10700参数 i7 10700核显相当于什么显卡
  5. 成为1个技术大牛的入门到进阶之路(学习路线图)
  6. [2007技术英雄会]行食人景情
  7. 用户对计算机调查,用户使用调查报告
  8. 中国地区三级联动菜单(纯js制作)
  9. mac安装yarn并配置环境变量
  10. 苹果电脑误删文件怎么找回?苹果电脑删了文件能恢复吗?苹果电脑文件删除怎么恢复