今天写了一个小程序,生成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. Fedora 17删除旧内核的操作
  2. php 5 在虚拟主机上安装,Apache多虚拟主机多版本PHP(5.2+5.3+5.4)共存运行配置全过程...
  3. Java中的浮点数四舍五入到小数点后2位的一些实用方法
  4. c位边上还有什么位_会议桌C位,是它!
  5. vim - multiple windows
  6. javascript之复习(框架里的方法们)
  7. Oracle DBHelper 第二版
  8. JSP-08-第三方控件的使用
  9. Binder机制原理简述
  10. 蓝牙防丢器原理和作用
  11. In-Class Essay结构范文分享
  12. 【渝粤题库】广东开放大学 标准化专业英语 形成性考核
  13. 证书有效性验证、根证书
  14. 周 7 福利日:中奖名单公布
  15. jsch jar包连接不上ssh报Algorithm negotiation fail 错误
  16. NSString文本替换
  17. 图形学学习笔记2——点阵图形光栅化
  18. echarts中如何配置图例形状、图标宽高、图标和文字间距、图例位置、文字颜色、字体大小
  19. 03 - 大学生如何使用GPT
  20. kotlin_08:wlan直连/wifi_p2p的页面跳转以及实时获取连接状态

热门文章

  1. STM32的ITM跟踪调试功能介绍及实现(一)KEIL篇
  2. Android 不重启切换语言
  3. 服务器硬盘是什么接口类型 服务器硬盘和普通硬盘区别
  4. 哈工大李治军老师的操作系统学习笔记
  5. java输入单个字符
  6. Python竟然能监控抖音?这也太刺激了!
  7. Java调用long的最大值和最小值
  8. “快半年了,找不到工作,我好焦虑,要怎么办?”
  9. 写一个cmd命令启动微信QQ
  10. 2019字节跳动研发笔试题题解(C++)