什么是随机数
- 格式:doc
- 大小:120.50 KB
- 文档页数:3
伪随机数法一、什么是伪随机数法?伪随机数法(Pseudo Random Number Generator, PRNG)是一种通过计算机算法生成的数字序列,看起来像是随机的,但实际上是有规律的。
这种方法可以用于模拟随机事件,例如在游戏中模拟掷骰子或抽奖等。
二、PRNG的原理PRNG的原理基于一个起始值称为“种子”,通过一定的算法对种子进行运算得到下一个数字。
这个过程不断重复,每次都以前一个数字作为输入,输出下一个数字。
由于计算机算法具有确定性,所以PRNG生成的数字序列虽然看起来像是随机的,但实际上是可预测的。
三、PRNG与真随机数与PRNG相对应的是真随机数发生器(True Random Number Generator, TRNG)。
TRNG通过物理过程如放射性衰变或热噪声等方式产生真正意义上的随机数。
相比之下,PRNG生成的数字序列虽然看起来像是随机的,但实际上存在规律可循。
四、常见PRNG算法1. 线性同余发生器(Linear Congruential Generator, LCG)LCG是最早也是最简单的PRNG算法之一。
它基于以下公式:Xn+1 = (aXn + c) mod m其中,Xn为当前数字,a为乘数,c为增量,m为模数。
LCG的随机性基于选择合适的参数a、c、m以及种子值。
2. 梅森旋转算法(Mersenne Twister, MT)MT是一种高质量的PRNG算法,它可以产生高质量的随机数字序列。
MT算法基于一个大质数2^19937-1,并且具有良好的统计特性。
3. 伽罗瓦LFSR算法(Galois Linear Feedback Shift Register, GLFSR)GLFSR是一种基于移位寄存器的PRNG算法。
它通过一个二进制序列和一个伽罗瓦域上的加法运算来生成随机数字序列。
五、PRNG应用场景PRNG广泛应用于模拟随机事件的场景中,例如游戏中的掷骰子或抽奖等。
此外,在密码学中也会使用PRNG生成密钥或加密数据。
⽐特币到底长什么模样?“区块链”、“⽐特币”这两个概念在2017年⾮常热。
但是,2018年这个概念可能会更热。
各⼤互联⽹公司相继发⼒区块链:百度推出了基于区块链的莱茨狗游戏,⽹易推出了基于区块链的星球,阿⾥巴巴在区块链的专利申请已经是国内企业的第⼀位。
区块链发源于⽐特币,那么⽐特币到底长什么样呢?下⾯,我们就⼀起来看看⽐特币的真容!上⾯的图⽚当然不是真的⽐特币。
⽐特币只是⼀串数字⽽已。
01 创世区块2007年,中本聪提出:“我相信存在⼀种不依赖信⽤的货币,我⽆法阻⽌⾃⼰去思考它。
”2008年11⽉1⽇,⼀封不起眼的帖⼦出现在论坛的“密码学邮件组”⾥,帖⼦⾔论⼤胆:“我正在开发⼀种新的电⼦货币系统,采⽤完全点对点的形式,⽽且⽆需授信第三⽅的介⼊。
”帖⼦署名是中本聪(Satoshi Nakamoto)。
2009年1⽉3⽇,中本聪把⾃⼰的思考落地,他在赫尔⾟基的⼀个服务器上创建、编译、打包了第⼀份开源代码;18时15分,创建了⽐特币世界的第⼀个区块(block),这⼀天被称为“创世⽇”,⽽这个区块也被称为“创世块”。
那么,下⾯我们就正式来看看这个创世块的真容吧,下⾯是创世区块的链接地址:如果你不便打开⽹页,我把创世区块截图出来:⽐特币第⼀个区块创世区块是不是⼀脸懵逼。
我简单来解释⼀下创世区块(BLOCK#0)⾥的内容:每个区块都分为3个部分:summary(基本情况)Hashes(哈希值)Transctions (交易详情)第1部分:summary(基本情况)Number Of Transcations 是交易数量,因为是第⼀个交易,所以它的值是1Output Total 输出数量,是⼀笔奖励50BTCEstimated Transaction Volume 是输⼊值,因为是第⼀笔交易,来⾃系统奖励,所以输⼊是0。
Transction Fees 是交易的⼿续费,刚开始的交易都是不需要⼿续费的。
Height 区块在主链(Main Chain)中的⾼度(每增加⼀个区块加1),因为是创世区块,所以为0。
第一章社会调查概述▪社会调查的含义:指的是一种采用自填式问卷或结构式访问的方法,通过直接的询问,从一个取自总体的样本那里收集系统的、量化的资料,并通过对这些资料的统计分析来认识社会现象及其规律的社会研究方式。
▪类型:根据调查对象的范围:普遍调查、抽样调查、典型调查、个案调查根据收集资料的方法:问卷调查(自填和邮寄)、访问调查(当面和电话)根据调查的目的或作用:描述性、解释性、预测性根据调查的性质或应用领域:行政统计调查、生活状况调查、社会问题调查、市场调查、民意调查、研究性调查根据调查的目的:应用性和学术性根据调查的内容:综合性和专题性▪题材:1.某一人群的社会背景有关人们各种社会特征的资料,回答“他们是谁”这样的问题2.某一人群的社会行为和活动有关人们“做了什么”及“怎么做”等方面的资料3.某一人群的意见和态度有关人们“想些什么”、“如何想的”或“有什么看法”、“持什么态度”等方面的资料社会调查的程序:普遍调查的特点;①工作量大,费时、费力、费钱②需要高度集中的组织和高度统一的安排③调查项目不能多,只能了解某一方面必不可少的基本情况抽样调查的优点:①节省时间、人力和财力②可以十分迅速地获得资料数据③可以比较详细地收集信息,获得内容丰富的资料④应用范围十分广泛⑤准确性高思考题1.联系实际说明社会调查的两种主要作用2.列举你所知道的社会调查的例子,并根据其性质或应用领域说明它们分别属于哪一类社会调查行政统计调查:比如全国人口普查。
生活状况调查;比如对某市离退休老人生活状况的调查,对某市居民生活质量的调查等等。
社会问题调查:比如未成年人犯罪现象调查,离婚问题调查,老年社会保障问题调查,独生子女教育问题调查等等。
市场调查:比如化妆品市场调查,饮料市场调查,服装市场调查,家电市场调查等等。
民意调查:比如“非典”期间对社会中人们的心理和看法进行调查,美国总统大选期间对选民进行的总统选举测验等等。
研究性调查;广泛应用于社会学、政治学、人口学、教育学、传播学等社会科学学科领域中的学术性社会调查。
抗战用到的数学原理是什么抗战是中华民族抵御日本侵略的一场全面抗战。
数学在抗战中发挥了重要的作用。
以下是抗战用到的数学原理的一些例子。
1.坐标系和地图制作:坐标系是数学的重要工具,决定了地图的制作和使用。
在抗战中,士兵、指挥官和情报人员需要根据地图上的位置和坐标来确定目标和制定战略。
数学提供了坐标和地图制作的理论基础。
2.加减乘除的运算:在抗战中,士兵需要进行简单的数学运算来计算战略布局、战斗中的距离、时间和弹药等。
指挥官则需要进行更复杂的运算,如计算士兵的损失率、补给需求等。
3.随机数和统计学:在军事行动中,兵力的部署、弹药的使用等存在一定的随机性。
通过随机数和统计学的方法,可以更好地评估军事行动的成功概率,避免风险和损失。
4.弹道学和导弹轨迹计算:在抗战中,炮兵和导弹是重要的军事装备,击败敌人的有力工具。
弹道学是数学的一个分支,通过对飞行物体的运动进行建模和计算,可以预测炮弹和导弹的轨迹,帮助炮兵和导弹部队进行精确的打击。
5.加密与密码破解:在战争中,通信的保密性是至关重要的。
数学在密码学中有重要应用,包括加密算法和密码破解等。
抗战期间,中国军方使用数论和密码学的原理,对抗日本军队的通信进行解密,获取重要情报。
6.生存分析和决策理论:在抗战中,军事指挥官需要根据各种因素做出决策,其中包括资源分配,兵力调动,战略部署等。
生存分析是一种为决策提供支持的数学方法,通过对各种因素进行评估和分析,帮助指挥官做出最佳决策。
7.逻辑和推理:抗战中,战略计划、战斗部署等都依赖于逻辑推理。
数学作为一门严谨的学科,培养了人们的逻辑思维能力,使指挥官能够在战争的复杂环境中做出合理的决策。
总结起来,数学在抗战中发挥了重要的作用。
从坐标系和地图制作到弹道学和密码学,从简单的加减乘除运算到复杂的统计学和决策理论,数学为抗战提供了理论基础和实际方法,为中国军队取得了抗击日寇的胜利作出了贡献。
变量未初始化,为什么得到的值有的是0,有的是随机值?要解释为什么全局变量未初始化为什么是0,⽽动态局部变量是⼀个随机数,就要先弄清楚静态,动态是什么,局部,全局⼜是什么.然后再思考为什么静态是0,就要思考它们的存储⽅式,因此⾃然就要了解内存的内部结构,然后了解它们的原理,⾃然就明⽩了.同时还能就是下初始化和赋值的区别.初始化和赋值的区别是什么?1. 初始化:声明变量的时候同时赋值,声明的时候会划出新的内存区域,同时2. 赋值:变量的储存⽅式:静态储存和动态储存.1. 静态存储:变量定义的时候,分配了⼀定的内存单元,在整个程序中,内存单元都不变.只能初始化⼀次,可以多次赋值,静态存储变量不初始化则初始为0.2. 动态存储:程序执⾏过程中才分配内存单元,使⽤完后就释放,如形参.函数的形式参数就是动态存储⽅式,声明函数的时候不给它分配内存单元.调⽤的时候传⼊实参,就分配内存单元,然后函数执⾏完后,就释放内存.动态存储变量若不初始化,则初始值为⼀个随机数.怎么声明变量的存储⽅式?1. 全局变量包括全局变量和静态全局变量,都是静态存储,因此未初始值未0,静态局部变量是静态存储,只有动态局部变量是动态存储.2. 加上static前缀就是静态存储变量,如static int a = 0;3. 不加static前缀默认就是动态存储变量,如int b = 1;(如果是全局变量则于是静态存储.)内存存储空间的分配:1. 动态存储区域:即存储⽤动态存储⽅式的变量的内存区域,如函数形参,没有加static前缀的局部变量(即动态局部变量),函数返回地址2. 静态存储区域:即存储⽤静态存储⽅式的变量的内存区域,如全局变量,静态全局变量.(没有动态全局变量)3. 程序区:存放程序语句.变量的作⽤域:局部和全局.1. 全局变量:在所有函数外定义(包含主函数),所有函数均能调⽤.全局变量都是静态存储,没初始化时默认为0;2. 局部变量:函数内部定义,只适⽤于当前函数.没初始化时,若是静态存储,则为0,若是动态存储,则为随机值.静态全局变量和全局变量的区别?1. 注意,它们都是静态存储,不存在动态存储变量.主要是作⽤域不同.静态全局变量只适⽤于当前⽂件,初始值为0;2. ⽽全局变量可以extern在其他⽂件使⽤.若同时出现两个相同变量名的不同类型变量,作⽤域⼩的起作⽤.初始值也为0;静态局部变量和(动态)局部变量的区别?1. 作⽤域相同,但内存释放周期不同.动态局部变量当函数执⾏结束后,就释放内存.下次在调⽤时⼜可以对其初始化.初始值为随机数.2. ⽽静态局部变量则在整个程序中都不会释放内存,下⼀次调⽤时还是上⼀次的值.初始值为0;为什么静态存储未初始化时,初始值为0,⽽动态则为⼀个随机数?。
计算机rand是什么意思对于计算机编程,大家一定很熟悉:程序编写的步骤是什么?指令是如何执行的?如何调试?……对于计算机编程,我们都有很多疑惑,下面是关于计算机编程中rand函数的介绍。
1。
什么是rand函数? rand是由印度人拉马努金于公元前3世纪发明的一种基本随机数生成器,他的函数是: rand(n)其中, n 为任意正整数。
这个函数非常简单,输入的值被替换成一个用逗号隔开的随机数,并把结果返回给用户。
在计算机中, rand是一个标准函数,是计算机中用于产生随机数的标准函数。
它的返回值是一个随机数,而不是一个数字。
一般来说,输入输出系统中使用的大多数数据都是从标准的计算机rand函数中产生的。
2。
rand函数的特点是什么?首先,它可以用来产生任何可能的随机数。
另外,由于它是一个计算机函数,所以rand函数没有类型上的限制。
在函数调用时,您不必提供给计算机所有相关的参数或进行任何转换。
例如,您可以在使用rand函数产生随机数之前向计算机提供日期和时间信息,而无需更改任何内容。
如果您想要在函数中向计算机传送一个字符串,则只需将其作为一个参数传递即可,无需提供特殊的参数。
3。
如何使用rand函数? rand函数实际上被设计为一个真正的函数。
您可以像使用普通函数那样使用rand函数。
例如,您可以使用rand函数从一个数组中随机取出一个数,以生成随机数。
如果您选择的数据不是数组中的某个值,则rand函数将返回0,但这种情况很少发生。
一旦您选择了一个值,则它将在函数中保持固定,直到函数返回其结果,然后用该结果替换原始数据。
4。
如何进行相关调试?由于rand函数的工作方式非常独特,因此可以轻松地实现相关调试。
例如,您可以按以下方法调试rand函数:在调试器中调用rand函数。
如果函数运行正确,则返回true。
如果函数未运行,则返回false。
如果函数返回false,则您可以查看计算机是否正在计算一个小数。
初中数学什么是随机分组如何进行随机分组随机分组是研究中常用的一种实验设计方法,用于将参与者或研究对象随机分配到不同的实验组或处理组中。
随机分组的目的是消除个体差异和其他干扰因素对研究结果的影响,以确保实验结果的可靠性和准确性。
以下是关于随机分组的详细解释和如何进行随机分组的方法:1. 什么是随机分组?随机分组是指将参与者或研究对象随机分配到不同的实验组或处理组中的方法。
这种分组方式是为了消除个体差异和其他干扰因素的影响,使得不同组之间的比较更可靠和准确。
随机分组可以用于各种实验研究,包括药物试验、教育研究、心理学实验等。
2. 如何进行随机分组?进行随机分组需要遵循一定的步骤和原则,以确保分组的随机性和公正性。
下面是一种常用的随机分组方法:a. 编号:为参与者或研究对象进行编号,每个编号代表一个个体。
编号可以根据实验的需要进行分组,例如按照性别、年龄等因素分组。
b. 随机化:使用随机数生成器或其他随机化方法,将编号随机分配到不同的实验组或处理组中。
确保随机分组的过程是无偏差的,即每个个体有相等的机会被分配到任何一个组中。
c. 检查分组:在进行实验之前,检查每个组的参与者或研究对象的数量和特征是否相似。
如果某个组的数量或特征明显不同,可能需要重新进行随机分组,以确保组间的比较是公平和准确的。
d. 实施实验:根据随机分组的结果,将参与者或研究对象分配到相应的实验组或处理组中进行实验。
在实验过程中,要确保各组接受相同的实验条件和处理方式,以保证实验结果的可靠性。
3. 随机分组的优势和注意事项:随机分组具有以下优势:a. 消除个体差异:通过随机分组,个体差异在不同组之间被均匀分配,减少了个体差异对研究结果的影响。
b. 避免偏倚:随机分组可以避免研究者对个体进行主观选择,从而减少了分组过程中的偏倚。
c. 增加可靠性:随机分组可以提高实验结果的可靠性和可重复性,使得不同组之间的比较更具有统计学意义。
然而,进行随机分组时也需要注意以下事项:a. 样本大小:确保每个组的样本大小足够大,以保证分组结果的统计学意义和可靠性。
rand_range用法[Python中的randrange用法]randrange是Python中的一个随机数生成函数,它的功能是生成一个指定范围内的随机整数。
在本文中,我们将逐步回答关于randrange的用法和功能的问答。
1. 什么是randrange函数?randrange函数是Python中的一个随机数生成函数,它可以在指定范围内生成一个随机整数。
它的语法如下:random.randrange(start, stop[, step])其中,start是要生成的随机数的起始范围(包含),stop是要生成的随机数的终止范围(不包含),step是生成随机数时的步长(可选,默认为1)。
2. randrange函数和randint函数有什么区别?randint函数和randrange函数都是用于生成随机整数的函数,但它们之间有一些区别。
randint函数的语法为:random.randint(a, b)其中,a和b分别表示要生成的随机整数的范围(包含a和b)。
与之不同,randrange函数的stop参数表示的是生成随机整数的终止范围(不包含stop)。
这意味着在使用randrange函数时,我们可以更灵活地设置随机整数的范围。
3. 如何使用randrange函数生成随机整数?要使用randrange函数生成随机整数,我们需要传递起始范围、终止范围和步长参数。
下面是一些使用randrange函数生成随机整数的例子:例1:生成0到9之间(包含0,不包含10)的随机整数pythonimport randomnum = random.randrange(0, 10)print(num)例2:生成1到100之间(包含1,不包含101)的随机偶数pythonimport randomnum = random.randrange(2, 101, 2)print(num)例3:生成-10到10之间(包含-10,不包含11)的随机奇数pythonimport randomnum = random.randrange(-9, 11, 2)print(num)在这些例子中,我们可以看到通过设定不同的起始范围、终止范围和步长参数,我们可以生成不同范围内的随机整数。
aesutils 偏移量偏移量(Offset)在AES加密算法中起着重要的作用。
本文将为读者介绍什么是偏移量,在AES加密中的具体作用,并提供一些相关参考内容,帮助读者更好地理解偏移量的概念和使用。
偏移量是一种用于加密过程中的固定长度的随机数。
在AES 算法中,偏移量的长度与密钥长度相同,通常为128比特(16字节)。
偏移量与密钥一起作为参数传递给算法,用于对明文进行加密和密文进行解密。
偏移量的主要作用是增加密码的强度,使得相同的明文每次加密得到的密文都是不同的。
这是因为偏移量会与明文进行异或运算,在每次加密过程中都会改变密文的输出。
因此,即使明文相同,不同的偏移量也会产生不同的密文。
对于每个加密块,都会使用一个唯一的偏移量。
这样做的目的是为了解决ECB模式中的一个问题,即相同的明文块生成相同的密文块。
通过使用不同的偏移量,AES算法可以避免这个问题,增加了密码的安全性。
在实际的应用中,偏移量可以通过伪随机数发生器生成。
这样可以确保偏移量是随机的,并且无法被轻易预测。
另外,偏移量还可以通过使用一个计数器来生成,每次加密块都增加计数器的值。
当使用AES算法进行加密时,偏移量必须与解密过程中使用的偏移量相同。
否则,解密操作将无法正确地还原明文。
因此,在进行加密和解密操作时,需要确保使用相同的偏移量。
总结起来,偏移量在AES加密算法中起着关键的作用。
通过改变每次加密的偏移量,可以确保相同的明文块生成不同的密文块,增加密码的安全性。
在使用AES算法进行加密和解密时,需要确保使用相同的偏移量,以确保正确还原明文。
以下是一些关于AES加密算法和偏移量的相关参考内容:1. "Advanced Encryption Standard (AES)" - National Institute of Standards and Technology (NIST) 网站上提供了AES加密算法的详细文档和标准。
跑马机原理跑马机,又称老虎机,是一种常见的赌博机。
它在赌场、娱乐场所和网上赌博平台上广泛存在。
那么,跑马机的原理是什么呢?在这篇文章中,我们将深入探讨跑马机的原理。
首先,跑马机是一种基于随机数生成器的电子设备。
它的核心原理是利用随机数生成器来确定每一次游戏的结果。
随机数生成器是一种能够产生随机数的设备,它通常是由计算机程序控制的。
在跑马机中,随机数生成器会不断产生随机数,这些随机数会决定游戏的结果,包括转动的图案和最终的奖励。
其次,跑马机的图案是如何确定的呢?跑马机通常会有多个转轮,每个转轮上都会有不同的图案。
当玩家启动跑马机后,转轮会开始旋转,最终停在一个特定的位置。
这些图案的停止位置是由随机数生成器决定的,因此每一次游戏的结果都是完全随机的。
除了随机数生成器,跑马机还采用了一种称为RNG(Random Number Generator)的技术来确保游戏的公平性。
RNG是一种能够产生真正随机数的技术,它可以避免任何人为干扰或操控游戏结果的可能性,从而保证了玩家的权益。
此外,跑马机还采用了一种称为RTP(Return to Player)的指标来表明游戏的盈利概率。
RTP指的是玩家在长期游戏中能够获得的平均回报率,它通常以百分比的形式表示。
跑马机的RTP通常会在游戏界面或说明书中公布,玩家可以根据这一指标来选择适合自己的游戏。
总的来说,跑马机的原理是基于随机数生成器和RNG技术的,它通过不断产生随机数来确定游戏的结果,保证了游戏的公平性和随机性。
同时,跑马机还通过RTP指标来表明游戏的盈利概率,为玩家提供了选择游戏的参考依据。
希望通过本文的介绍,读者能够更加深入地了解跑马机的原理,从而在游戏中有更好的体验。
概率论大作业
D012012016 廖毛
一、什么是随机数?
随机数是专门的随机试验的结果。
在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等等。
产生随机数有多种不同的方法。
这些方法被称为随机数生成器。
随机数最重要的特性是它在产生时后面的那个数与前面的那个数毫无关系。
真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。
这样的随机数生成器叫做物理性随机数生成器,它们的缺点是技术要求比较高。
一、什么是伪随机数?
在实际应用中往往使用伪随机数就足够了。
这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。
它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。
这样的生成器叫做伪随机数生成器。
计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可见的。
我们可以这样认为这个可预见的结果其出现的概率是100%。
所以用计算机随机函数所产生的“随机数”并不随机,是伪随机数。
三、如何用常用的分布生成随机数(伪随机数)。
用常用的分布产生的数是伪随机数,这种方法叫做逆变法。
设X 是一个已知分布函数为()x F 的随机变量,目的是要产生X 取值的随机数序列{}i x 。
设()x F Y =是一个关于X 的,并以X 的分布函数()x F 为函数随机变量,对于X 的一个样本值x ,有()x F y =也是y 的一个样本值。
设()x 1-F 为()x F 的逆函数,则有:
()()y F x Y F X 11--==和
那么按照分布函数的定义,Y 的分布函数为
()()()
()
()()()()y x F x X P F X P y X F P y Y P ==<=<=<=<-1y 1
如果Y 的定义域在[]1,0内,对照分布函数,可知Y 服从0-1均匀分布。
逆变法的计算步骤如下:
步骤一:按照上面(1)式,由给定的分布函数()x F 或密度函数()x f ,由
()()dt t f x F x
⎰∞-=计算()x F 。
步骤二:推导()x F 的逆函数()y 1-F 。
步骤三:产生0-1均匀分布的随机数,()1,0U y ∈。
步骤四:按照式子()Y F X 1-=计算得到X 的一个样本值。
步骤五:重复步骤三和步骤四,即得到一个分布为()x F 的随机数列{}i x 。
四、用均匀分布和正态分布生成伪随机数
①乘同余法产生均匀随机数
乘同余法:设A 是一个常数,M 是一个最大的模数,则
()M AS S k k mod 1=+
其中,k S 表示第k 次迭代得到的随机数;mod(M)表示取模运算。
根据数论的理论可以证明:
位数为L 的计算机,如果取模数L M 2=,当
()()2022,1k 4,3k 81-+=±=L S k A A 数序列长度为则可以获得最长的随机为奇数
为正整数;
例:若L 为6,则M=64,取A=13,10=S ;则可以获得一个随机序列: {1,13,41,21,17,29,57,37,33,45,9,53,49,61,25,5,1,···} 以上不重复的序列长度为1624=。
②正态分布产生伪随机数
产生服从一般正态分布()
2,δu N 的随机数x 时,只要先按照
122z 1n
n y n i i ⎪⎭⎫ ⎝⎛-=∑=
产生()1,0z N ∈,再按公式z u x δ+=变化,就可以获得需要的随机数。
const int N = 100;
double getRand()
{
double s = 0;
for(inti = 0; i != N; ++i)
s += double(rand() % 1000) / 1000;
return s;
}
函数生成的随机数是N个[0,1]间服从均匀分布的随机数的和。
这里N为100。
从而理论上产生的随机数应近似服从()2
N,其中n为N,即100,μ为0.5,
nu
,δn
2
δ为1/12。
程序生成了100个随机数,并求出样本均值与样本方差,也即μ与2δ
的最大似然估计:
//生成随机数并存储
double sum, store[100], xi, su = 0, sb = 0, ssb = 0;
int cnt = 0;
sum = 0;
for(int i = 0; i != 100; ++i)
{
xi = getRand();
sum += xi;
store[i] = xi;
}
//得到样本均匀与样本方差
su = sum / 100;
for (int i = 0; i != 100; ++i)
sb += (store[i] - su) * (store[i] - su);
sb /= 100;
ssb = sqrt(sb);。