伪随机数与随机数种子
以下测试环境为linux(CentOS 7.6)
计算机产生的随机数是伪随机。C语言中与随机数相关的两个函数为rand()
和 srand()
,所在的头文件为stdlib.h
先看一下两个函数的原型:
rand()
返回一个随机整数,介于0
和 RAND_MAX
之间
srand()
产生随机数种子
在CentOS 7.6
中RAND_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.随机种子来自系统时钟,确切地说,是来自计算机主板上的定时/计数 ...
- 单片机生成随机数的方法总结
去年冬天在帮学校附近一家密室逃脱店做一些电子机关,其中一个打地鼠项目需要用到单片机产生随机数,用于实现随机让几个地鼠"钻"出来.一开始想法很单纯,不就是随机函数么,之前C语言课上就 ...
- the oracle of bacon,python爬虫之遍历单个域名
即使你没听说过"维基百科六度分隔理论",也很可能听过"凯文 • 贝肯 (Kevin Bacon)的六度分隔值游戏".在这两个游戏中,目标都是把两 个不相干的主题 ...
- Go语言 rand(随机数)包
包"math/rand" 随机数生成器,可以生成 整型或浮点型 的伪随机数. 随机数种子 不同的种子生成不同的随机数,无种子编译后运行的结果是定值. 通常以时钟作为参数初始化,ra ...
- Python3常用其他API速查手册(持续更新ing...)
诸神缄默不语-个人CSDN博文目录 最近更新时间:2023.5.11 最早更新时间:2022.6.27 运算符 + - * / 取余% 开方** 等式:= == > < >= < ...
- 随机数种子与伪随机数生成原理
总之: 1.伪随机数并不是假随机数,这里的"伪"是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的. 2.随机种子来自系统时钟,确切地说,是来自计算机主板上的定时/计数 ...
- 最透彻的关于“随机数种子”和“伪随机数”的产生原理
文章转自:http://blog.csdn.net/xzp7772009/article/details/7849030 版权归原作者! //rand01.c #include<dos.h> ...
- c语言如何初始化随机数种子,关于随机数函数rand和其种子初始化
原文链接 随机数.随机数种子 在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字重复率很低,这样看起来好象是真正的随机数,实现这一功能的程序叫伪随机数发生器. 有关如何产生随机数的理论有 ...
最新文章
- 经济独立,是你最大的底气
- Entity Framework 博客园专题
- Android编译系统中的Kconfig,Makefile,.config编译系统浅析
- POJ 3267为什么优先队列超时,DP就能过,难过
- python方法items_Python字典items()方法与示例
- HTML 颜色值及脚本
- MySQL 日志文件
- Shell 编程知识点集锦
- 高薪诚聘游戏引擎研发,有意者请与我联系!
- eclipse安装教程(win10版本,很全的)
- shader拖尾_u3d拖尾特效组件-------TrailRenderer
- 上元之夜,故宫亮起来!
- 小米电脑桌面没见计算机怎么办,手机屏幕太小?一分钟教会你小米手机投屏电脑方法,低调收藏!...
- Ubuntu16.04 安装字体教程
- 工作流之activiti6新手上路
- if-else 语句优雅处理
- 四位数码管显示多位数字计时
- 信息学奥赛一本通:1162:字符串逆序
- STP-17-对抗单向链路问题
- Java web 中的 三层架构 - 刘耀的文章
热门文章
- android之简单手电筒
- 模拟售票大厅实例——多线程时访问共享变量时的安全(CMutex或CCriticalSection的应用)
- 【算法】通俗易懂的PID算法
- 数学抽象的魅力-奇妙的彭罗斯镶嵌(转载)
- 《少林达摩易筋经》惊现淘宝网! 1
- 鼠标单击改变按钮颜色_如何在iPad上用鼠标单击“主页”按钮
- 长文梳理Muduo库核心代码及优秀编程细节剖析
- 火车票·自动抢票软件
- 背调给上家领导打电话,直接背刺说坏话,导致我的offer被取消!
- 塔防三国志服务器维护时间,塔防三国志 9月28日服务器当机事件补偿方案及说明...