以下测试环境为linux(CentOS 7.6)

计算机产生的随机数是伪随机。C语言中与随机数相关的两个函数为rand()srand() ,所在的头文件为stdlib.h

先看一下两个函数的原型:

rand() 返回一个随机整数,介于0RAND_MAX之间

srand()产生随机数种子

CentOS 7.6RAND_MAX 的最大值和INT_MAX 一样

rand()

#include <stdio.h>
#include <stdlib.h>
int main(){for(int i=0;i<5;i++){printf("%d\n",rand());}return 0;
}


从实验结果可以看出,多次运行,输出的随机数序列是相同的。

srand()

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


srand() 函数接受一个参数,作为随机数种子。rand() 函数会使用该随机数种子,并按照某种计算方式产生随机数。在上面的实验中,将时间作为随机数种子,因为时间是变化的,所以多次运行后,输出的随机数序列并不相同。如果将随机数种子固定,即:

#include <stdio.h>
#include <stdlib.h>
int main(){srand(1);for(int i=0;i<5;i++){printf("%d\n",rand());}return 0;
}


从实验结果可以看出,随机数种子固定后,每次产生的随机数序列是相同的。该结果和直接使用rand() 函数的结果一致,由此可知,rand() 函数默认的随机数种子为1

总结

计算机会根据随机数种子产生随机数序列,如果随机数种子相同,每次产生的随机数序列是相同的。如果随机数种子不同,产生的随机数序列是不同的。由此可以体会伪随机数 字的含义。

伪随机数与随机数种子相关推荐

  1. 伪随机数和随机数种子

    随机数种子 + 伪随机数生成器 = 伪随机数生成 同样的随机数种子和同样的生成器总是生成同样的序列. 伪随机数是有周期的,多次运行后结果会出现重复. 真正的随机数必须使用专门的设备,比如热噪信号.量子 ...

  2. 伪随机数,随机数种子

    总之: 1.伪随机数并不是假随机数,这里的"伪"是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的. 2.随机种子来自系统时钟,确切地说,是来自计算机主板上的定时/计数 ...

  3. 单片机生成随机数的方法总结

    去年冬天在帮学校附近一家密室逃脱店做一些电子机关,其中一个打地鼠项目需要用到单片机产生随机数,用于实现随机让几个地鼠"钻"出来.一开始想法很单纯,不就是随机函数么,之前C语言课上就 ...

  4. the oracle of bacon,python爬虫之遍历单个域名

    即使你没听说过"维基百科六度分隔理论",也很可能听过"凯文 • 贝肯 (Kevin Bacon)的六度分隔值游戏".在这两个游戏中,目标都是把两 个不相干的主题 ...

  5. Go语言 rand(随机数)包

    包"math/rand" 随机数生成器,可以生成 整型或浮点型 的伪随机数. 随机数种子 不同的种子生成不同的随机数,无种子编译后运行的结果是定值. 通常以时钟作为参数初始化,ra ...

  6. Python3常用其他API速查手册(持续更新ing...)

    诸神缄默不语-个人CSDN博文目录 最近更新时间:2023.5.11 最早更新时间:2022.6.27 运算符 + - * / 取余% 开方** 等式:= == > < >= < ...

  7. 随机数种子与伪随机数生成原理

    总之: 1.伪随机数并不是假随机数,这里的"伪"是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的. 2.随机种子来自系统时钟,确切地说,是来自计算机主板上的定时/计数 ...

  8. 最透彻的关于“随机数种子”和“伪随机数”的产生原理

    文章转自:http://blog.csdn.net/xzp7772009/article/details/7849030 版权归原作者! //rand01.c #include<dos.h> ...

  9. c语言如何初始化随机数种子,关于随机数函数rand和其种子初始化

    原文链接 随机数.随机数种子 在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字重复率很低,这样看起来好象是真正的随机数,实现这一功能的程序叫伪随机数发生器. 有关如何产生随机数的理论有 ...

最新文章

  1. 经济独立,是你最大的底气
  2. Entity Framework 博客园专题
  3. Android编译系统中的Kconfig,Makefile,.config编译系统浅析
  4. POJ 3267为什么优先队列超时,DP就能过,难过
  5. python方法items_Python字典items()方法与示例
  6. HTML 颜色值及脚本
  7. MySQL 日志文件
  8. Shell 编程知识点集锦
  9. 高薪诚聘游戏引擎研发,有意者请与我联系!
  10. eclipse安装教程(win10版本,很全的)
  11. shader拖尾_u3d拖尾特效组件-------TrailRenderer
  12. 上元之夜,故宫亮起来!
  13. 小米电脑桌面没见计算机怎么办,手机屏幕太小?一分钟教会你小米手机投屏电脑方法,低调收藏!...
  14. Ubuntu16.04 安装字体教程
  15. 工作流之activiti6新手上路
  16. if-else 语句优雅处理
  17. 四位数码管显示多位数字计时
  18. 信息学奥赛一本通:1162:字符串逆序
  19. STP-17-对抗单向链路问题
  20. Java web 中的 三层架构 - 刘耀的文章

热门文章

  1. android之简单手电筒
  2. 模拟售票大厅实例——多线程时访问共享变量时的安全(CMutex或CCriticalSection的应用)
  3. 【算法】通俗易懂的PID算法
  4. 数学抽象的魅力-奇妙的彭罗斯镶嵌(转载)
  5. 《少林达摩易筋经》惊现淘宝网! 1
  6. 鼠标单击改变按钮颜色_如何在iPad上用鼠标单击“主页”按钮
  7. 长文梳理Muduo库核心代码及优秀编程细节剖析
  8. 火车票·自动抢票软件
  9. 背调给上家领导打电话,直接背刺说坏话,导致我的offer被取消!
  10. 塔防三国志服务器维护时间,塔防三国志 9月28日服务器当机事件补偿方案及说明...