首页

文章

随机数和伪随机数的计算公式都是什么呀?

发布网友 发布时间:2022-03-29 00:54

我来回答

2个回答

热心网友 时间:2022-03-29 02:24

  为追求真正的随机序列,人们曾采用很多种原始的物理方法用于生成一定范围内满足精度(位数)的均匀分布序列,其缺点在于:速度慢、效率低、需占用大量存储空间且不可重现等。为满足计算机模拟研究的需求,人们转而研究用算法生成模拟各种概率分布的伪随机序列。伪随机数是指用数学递推公式所产生的随机数。从实用的角度看,获取这种数的最简单和最自然的方法是利用计算机语言的函数库提供的随机数发生器。典型情况下,它会输出一个均匀分布在0和1区间内的伪随机变量的值。其中应用的最为广泛、研究最彻底的一个算法即线性同余法。

  线性同余法LCG(Linear Congruence Generator)

  选取足够大的正整数M和任意自然数n0,a,b,由递推公式:

  ni+1=(af(ni)+b)mod M i=0,1,…,M-1

  生成的数值序列称为是同余序列。当函数f(n)为线性函数时,即得到线性同余序列:

  ni+1=(a*ni+b)mod M i=0,1,…,M-1

  以下是线性同余法生成伪随机数的伪代码:

  Random(n,m,seed,a,b)
  {
  r0 = seed;
  for (i = 1;i<=n;i++)
  ri = (a*ri-1 + b) mod m
  }

  其中种子参数seed可以任意选择,常常将它设为计算机当前的日期或者时间;m是一个较大数,可以把它取为2w,w是计算机的字长;a可以是0.01w和0.99w之间的任何整数。

  应用递推公式产生均匀分布随机数时,式中参数n0,a,b,M的选取十分重要。

  例如,选取M=10,a=b =n0=7,生成的随机序列为{6,9,0,7,6,9,……},周期为4。

  取M=16,a=5,b =3,n0=7,生成的随机序列为{6,1,8,11,10,5,12,15,14,9,0,3,2,13,4,7,6,1……},周期为16。

  取M=8,a=5,b =1,n0=1,生成的随机序列为{6,7,4,5,2,3,0,1,6,7……},周期为8。

  Visual C++中伪随机数生成机制

  用VC产生随机数有两个函数,分别为rand(void)和srand(seed)。rand()产生的随机整数是在0~RAND_MAX之间平均分布的,RAND_MAX是一个常量(定义为:#define RAND_MAX 0x7fff)。它是short型数据的最大值,如果要产生一个浮点型的随机数,可以将rand()/1000.0,这样就得到一个0~32.767之间平均分布的随机浮点数。如果要使得范围大一点,那么可以通过产生几个随机数的线性组合来实现任意范围内的平均分布的随机数。

  其用法是先调用srand函数,如

  srand( (unsigned)time( NULL ) )

  这样可以使得每次产生的随机数序列不同。如果计算伪随机序列的初始数值(称为种子)相同,则计算出来的伪随机序列就是完全相同的。要解决这个问题,需要在每次产生随机序列前,先指定不同的种子,这样计算出来的随机序列就不会完全相同了。以time函数值(即当前时间)作为种子数,因为两次调用rand函数的时间通常是不同的,这样就可以保证随机性了。也可以使用srand函数来人为指定种子数分析以下两个程序段,

  程序段1:

  //包含头文件
  void main() {
  int count=0;
  for (int i=0;i<10;i++){
  srand((unsigned)time(NULL));
  count++;
  cout<<"No"<
  //包含头文件
  void main() {
  int count=0;
  srand((unsigned)time(NULL));
  for (int i=0;i<10;i++){
  count++;
  cout<<"No"<
  No1=9694 No2=9694 No3=9694 No4=9694 No5=9694
  No6=9694 No7=9694 No8=9694 No9=9694 No10=9694

  程序段2的运行结果为:

  No1=10351 No2=444 No3=11351 No4=3074 No5=21497
  No6=30426 No7=6246 No8=24614 No9=22089 No10=21498

  可以发现,以上两个程序段由于随机数生成时选择的种子的不同,运行的结果也不一样。rand()函数返回随机数序列中的下一个数(实际上是一个伪随机数序列,序列中的每一个数是由对其前面的数字进行复杂变换得到的)。为了模仿真正的随机性,首先要调用srand()函数给序列设置一个种子。为了更好地满足随机性,使用了时间函数time(),以便取到一个随时间变化的值,使每次运行rand()函数时从srand()函数所得到的种子值不相同。伪随机数生成器将作为"种子"的数当作初始整数传给函数。这粒种子会使这个球(生成伪随机数)一直滚下去。

  程序段1中由于将srand()函数放在循环体内,而程序执行的CPU时间较快,调用time函数获取的时间精度却较低(55ms),这样循环体内每次产生随机数用到的种子数都是一样的,因此产生的随机数也是一样的。而程序段2中第1次产生的随机数要用到随机种子,以后的每次产生随机数都是利用递推关系得到的。 基于MFC的随机校验码生成

  Web应用程序中经常要利用到随机校验码,校验码的主要作用是防止黑客利用工具软件在线破译用户登录密码,校验码、用户名、密码三者配合组成了进入Web应用系统的钥匙。在利用VC开发的基于客户机/浏览器(Client/Server)模式的应用软件系统中,为了防止非法用户入侵系统,通常也要运用随机校验码生成技术。

热心网友 时间:2022-03-29 03:42

伪随机数是什么啊?不随机?
华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 金陵科技学院、常州工程学院、徐州工程学院三个学... 三国时期的名人墓 邓文迪到底是哪里人?徐州的还是广州的? 徐工待遇怎么样? 急需徐州市香溪左岸的营销策划方案,越详细越好。... 检测甲醛的正规机构要多少钱? 西安三室一厅多少钱? 一套三室两厅的房子要弄智能家居的形式,要有哪些... 徐州金洋紫金东郡地势怎么样?有在那买房子的吗? 快狗打车每天上线用人脸识别吗? 江苏徐州郑集现在的房价是多少?? 徐州矿大考研租房 徐州鱼先生的城升值空间大吗 徐州哪有卖海尔中央空调的?我看到有人装的,我也... 江苏徐州市中国矿业大学的老校区附近租房子一年大... 徐州房产 在徐州贾汪买哪个房子好? 徐州矿业大学附近租房最便宜多少钱 徐州第七期经济适用房有三室一厅吗 6月份拿到房子,准备简单环保的装修一下,想了解徐... 头发少戴假发好吗 头发有点少,想戴假发,对头皮有伤害吗? 头顶头发很少 还能戴假发片吗? 请问:头发少的人 能带假发片吗? 发量较少戴假发片好还是戴整顶假发好? 头发稀少戴什么样的假发合适? 我自己头发很少,想买个短的假发带怎么带 女生头发稀少可以戴假发吗 头发少怎样带假发 男人因为头发少而想佩戴假发方便吗 我是男生,头发稀少,戴假发合适么, 头发太少了,想把它剃光了,买个假发来带,可是带... 头发特别少适合带半头套假发吗? 头发少,可以戴假发么? 婆婆就因为头发少就买一个400的假发,这有必要吗?... 请问女士头发非常稀少可以戴3假发吗? 什么是伪随机数?假设给定大量的(0-9)间的数,如何判断其是伪随机数还是纯随机数? 跪求本草药王免费在线观看资源 本草药王大结局是什么,大结局,人物最终结局 谁知道<本草药王> 国语版的下载地方?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com