怎么样证明一组随机数是属于哪个matlab泊松分布随机数的事

原创图片,请勿转载
作者:野比()
23 May 2012
& 保留所有权利 野比 2012
注:本文为个人尝试,仅供参考。
真随机和伪随机
随机数是计算机编程中一个非常重要的工具。利用它,我们可以完成很多很多很多的事,而且有很多很多很多的事也必须用随机数来完成。所以随机数够不够「随机」,对我们来说,是非常之关键的。在软件编程中,比如C#(其他任何语言均与此类似),我们用System.Random这个类来获得随机数。由于是使用特定算法获取的随机数,所以,从本质上来讲,Random生成的(甚至是任何软件生成的)随机数并非真随机数,而仅是具有一定随机程度的伪随机数。在Wikipedia上对伪随机数的解释是这样的。
伪随机数,或称伪乱数,是使用一个确定性的算法计算出来的似乎是随机的数序,因此伪随机数实际上并不随机。在计算伪随机数时假如使用的开始值不变的话,那么伪随机数的数序也不变。伪随机数的随机性可以用它的统计特性来衡量,其主要特征是每个数出现的可能性和它出现时与数序中其它数的关系。伪随机数的优点是它的计算比较简单,而且只使用少数数值很难推算出计算它的算法。一般人们使用一个假的随机数,比如电脑上的时间作为计算伪随机数的开始值。
目前几乎所有的真随机数发生器(从理论上来说,真随机数只有可能在自然界中由物理现象产生,即由硬件实现)都具有其各自的专利,不是一般人可以接触的。下图列举了部分公司的真随机数发生器专利。
作者:野比()
23 May 2012
& 保留所有权利 野比 2012
System.Random的实现原理
我们使用的System.Random类是基于Donald E. Knuth的减随机数生成器算法实现的,从实用角度而言,其随机程度已经足够。在加上Random可以利用int型的种子进行随机化,所以我们在日常使用中并没有感觉到任何问题。
其实今天我并不是要研究真随机数,只是在使用过程中,我想到一个情况:如果计算机飞速发展,而计算机又只能生成伪随机数,那么我们现在的一般应用情况&&
while(true)
// 用种子初始化随机数
rand = new Random(seed);
int value = rand.Next();
// (费时的操作)
在未来超高速计算下,现在的「费时的操作」也许 未来就一晃而过,用时几乎可以忽略。在这样的极限情况下,上面的语句就变成了单纯的循环生成随机数了。那么这种情况下,Random生成的数值,还能不能够保证「一定程度的随机」呢?来做个实验看看。
CPU:i3 380m 2.56GHz 2核4线程
内存:DDR3 1066 2GB x2
硬盘:TOSHIBA MK3265GSX (320 GB) @ 5400 RPM
runtime:.NET Framework版本:v2.0.50727(C#2.0)
开发:Visual Studio 2005 Team Suite
OS:Windows XP SP3
模拟最严酷的环境,使用类似下面这样的代码,通过改变不同的rand生成方式和count数,对多种Random生成方式及相应的随机数生成结果进行对比。
// 示例代码,不可用
for(int i = 0; i & i++)
rand.Next();
作者:野比()
23 May 2012
& 保留所有权利 野比 2012
这次实验测试以下8种常见的随机数生成方式(找找看你一般用的第几种):
1. 默认构造函数
使用Random rand=new Random()。这是最为简单的生成方法,单次生成,不重复。这也是MSDN建议的生成方式。
2. 默认构造函数(重复创建)
仍然使用默认构造函数,但是在每次循环中都重新创建Random变量,即不停的rand=new Random(),下同。
3. 用常数作为种子
使用rand=new Random(10)。用常数作为种子创建rand变量。单次,类似用例#1。
4. 用常数作为种子(重复创建)
类似用例#2。
5. 用时间刻度作为种子(重复创建)
这是比较普遍的一种用法,每次利用系统当前时间作为种子创建rand变量。使用DateTime.Now.Ticks(此属性的值表示自 0001 年 1 月 1 日午夜 12:00:00 以来已经过的时间的以 100 毫微秒为间隔的间隔数)。
注意该方法只能重复创建,否则将成为用例#3。
6. 用随机数作为种子(重复创建)
这是一种「看起来很随机的」方法,使用另一个Random变量,在每次循环时用Next()作为种子创建新的rand变量。因为具体结果如何我也没有用过,所以需等实验后看数据才知道。
注意该方法只能重复创建,否则将成为用例#3。
7. 三角函数种子(重复创建)
使用Math.Sin()三角函数作为种子创建新的rand变量。(纯实验)
8. 复杂种子
这是种子随机性比较大的一种方法,是众多高手常用的。我摘录了xiahouwen在里介绍的方法,利用GUID哈希值、当前时间Ticks和计数器相乘来计算种子,生成rand变量。算法如下。
private static int randomCount = 0;
private static string CreateRandomText()
randomCount++;
Guid guid = Guid.NewGuid( );
int key1 = guid.GetHashCode( );
int key2 = unchecked( (int)DateTime.Now.Ticks );
int seed = unchecked( key1 * key2 * randomCount );
Random rand = new Random( seed );
int n = rand.Next( 100000, 999999 );
// (业务代码,略)
实验原理较为简单,只是统计在生成范围内,生成的多个随机数的分布情况。利用数组进行统计,然后在PictureBox中绘制出统计直方图。同时,程序将统计最大重复出现次数和随机数跳变次数,以检验Random的生成结果变化情况。跳变数越多,表示生成的数字变化得越多,反之则生成数字变化较少。最理想的情况是跳变次数等于生成次数,即每次生成的数值都和前一次不同。
实验程序的实现和代码这里不做解释,和本文无关。
下面是两张测试样图,分别标记为A和B。
这是测试生成100个随机数的样图结果。生成的随机数范围是沿x轴从左到右,整个样图的Width范围。Random每生成一个随机数r,即在x=r处的直方图上+1,因此直方图每条线高度代表该线所在坐标数值出现次数。图中文字说明含义为:
最大重复:同样的数值出现的最大次数,例如生成100个随机数(0,1,2...),其中1出现了60次,则最大重复为60
跳变:当某次生成的随机数和前次不同,则跳变数+1
用时:生成全部(100个)随机数所用时间,该时间不含显示时间
需要注意的是直方图的高度是自适应的,因此两张不同的直方图对比时需要参考每张图上标注的「最大重复」。
如何阅读样图
测试程序运行后得到的样图参见前一节的Sample A和Sample B。样图记录的是Random生成的随机数的重复次数统计,因此越是「不重复」的样图,表示该测试用例的「随机性」越高。在图上看,就是直方图线条越多越好,「最大重复」数值越小越好,跳变越大越好。
作者:野比()
23 May 2012
& 保留所有权利 野比 2012
注意观察结果图中的数据。
1. 100次生成
2. 1,000次生成
3. 10,000次生成
4. 100,000次生成
5. 1,000,000次生成
&作者:野比()
23 May 2012
& 保留所有权利 野比 2012
从实验结果看,和我们平时的印象「有所出入」。下面逐一进行分析。
默认构造函数单次创建的Random变量忠实的完成了近乎「白噪声」的随机数输出分布。
很差的随机性。也展示出一个问题,即同样种子创建的Random,其输出具有极高的相似性。这和伪随机序列有关,参见#4。
使用常数完成初始化的Random,和#1类似,实现了相当程度的随机性输出。
每次采用同样的种子创建Random,并取Random生成的第一个随机数,得到的数值完全一样。这充分说明了计算机生成的伪随机序列,如果种子一样,序列index一样,那么得到的值也是(几乎)一样的。证明了Random获取的并非真实随机数。
对于高强度的生成,以时间为种子的#5却出现了「随机不起来」的问题。仔细分析,以100万次重复为例。共消耗时间毫秒,平均每次消耗即3757纳秒。DateTime.Ticks的最小时间刻度为100纳秒,照理说不应该出现种子来不及变化的情况。但事实上,把每次创建Random时的时间种子dump出来观察,会发现平均每20~50次循环后,DateTime.Now.Ticks才会发生变化。这也就导致了输出的值域收缩了20~50倍。
用#1的方式生成的随机数,以此作为新Random的种子,随机性上得到了保证,自然可以达到白噪声分布的效果。
使用Math.Sin()作为种子。由于Math.Sin()得到的是-1~1之间的实数,所以需要将其乘以某常数进行放大。放大带来的问题就是值域的收缩,再加上Sin()的周期性,出现了种子取值固定的问题。
让人寄予厚望,运算复杂,非常专业的#8终于不负众望,获得了和#1、#3「同样」的噪声结果。消耗众多资源,反复计算得到的#6、#8用例,在实际结果上,和#1、#3是同样的,因为「白噪声不可能再白了」。#5、#7更差,所以在这样大量高强度的情况下,最简单有效的办法,就是使用#1中示例的单次默认构造函数创建Random变量。
以上即是本人通过实验结果做出的简单分析。鉴于本人脑容量有限,结论仅供参考。本次测试如有不妥和错误之处,还请各位不吝赐教。
作者:野比()
23 May 2012
& 保留所有权利 野比 2012
阅读(...) 评论()
我是野比喵,你是大傻逼,啦啦啦这是一篇旧文,点击以旧主题模式浏览。如何评价一个伪随机数生成算法的优劣?
给出了一个直观的答案,不过这只是一个非常特殊的特例,实际上绝大多数随机数发生器用这种方法根本看不出来质量。正确的方法应该是参考德国联邦信息安全办公室给出了随机数发生器质量评判的四个标准。PDF链接在这里里面列出了四个判别随机数序列质量的准则K1 — A sequence of random numbers with a low probability of containing identical consecutive elements.K2 — A sequence of numbers which is indistinguishable from 'true random' numbers according to specified statistical tests.K3 — It should be impossible for any attacker (for all practical purposes) to calculate, or otherwise guess, from any given sub-sequence, any previous or future values in the sequence, nor any inner state of the generator.K4 — It should be impossible, for all practical purposes, for an attacker to calculate, or guess from an inner state of the generator, any previous numbers in the sequence or any previous inner generator states.大致翻译:K1——相同序列的概率非常低K2——符合统计学的平均性,比如所有数字出现概率应该相同,卡方检验应该能通过,超长游程长度概略应该非常小,自相关应该只有一个尖峰,任何长度的同一数字之后别的数字出现概率应该仍然是相等的等等K3——不应该能够从一段序列猜测出随机数发生器的工作状态或者下一个随机数K4——不应该从随机数发生器的状态能猜测出随机数发生器以前的工作状态我们一般用的随机数发生器至少要符合K1和K2,而用于加密等应用的随机数发生器应该符合K3和K4。的例子里,应该是PHP的随机数发生器不满足K2。这是一个非常巧的例子,只是PHP 5在Windows底下调用rand()函数的时候会有这样的情况,别的组合不会产生这么巧的图像。实际上PHP提供了一个质量高的多,非常好的随机数发生器mt_rand(),在涉及网页安全的时候请选用这个函数。关于mt_rand()的原理,可以参考这个关于梅森旋转算法的Wiki网站: /
(英文)。
谈到随机性,这大概是一个令人困惑哲学问题吧。随机行为精确地说究竟指的是什么,最好是有定量的定义。Kolmogorov曾提出一种判定随机性的方法:对于无穷的随机数序列,无法用其子序列描述。J.N.Franklin则认为:如果一个序列具有从一个一致同分布的随机变量中独立抽样获得的每个无限序列都有的性质,则是随机的。这些定义都不是很精确,有时甚至会导致矛盾。可见数学家在谈到这个问题时是多么的审慎。随机数生成器只是一种产生符合特定分布的随机数的算法。这些所谓的随机数序列实际上是周期性的。从实用的角度出发,随机数生成器如果能够在尽可能多的场合中产生正确的结果,那么它就是好的。但是这个愿望无法完全实现。因为每一个生成器都会在特定的场合失效,比如说可能无法达到随机数的均匀性或者随机数之间隐藏着关联。已经有大量的随机数生成器,但是找到好的、易移植的、达到工业水准的随机数生成器是一个难以实现的目标。生成非均匀分布的标准方法是先产生均匀分布随机数,然后将其转化为特定分布的随机数。我在博客中有简易介绍。Knuth曾经说. . . look at the subroutine library of each computer installation in your organization, and replace the random number generators by good ones. Try to avoid being too shocked at what you find.@余天升的答案测试的大概是随机数分布的随机性和周期性,即随机数的出现无规律,周期要足够长(这是我猜的,猜错了表打我)。这当然是一个很好的方法,图也很简单直白。但是也有其他一些因素需要考虑。对于不同的应用,这些因素的重要程度并不一样。比如说用物理方法产生的真随机数比由数学方法产生的伪随机数随机性更强,更难破解,但这并不能说明物理方法产生的随机数质量更高。假设我们并能够事先知道应用的场景,应该如何评价一个生成器的质量呢?我们并不知道采样的过程、样本的大小或者仿真中的维度。以下两点是很重要的:生成器只提供预测,不提供保证。这是因为我们产生的只是有限数量的随机数,并且转换成特定分布的方法并不是足够好。因此,在特定的场合即使可靠的生成器也会失效。尽管没有保证,但是有数学上的安全性测度。这意味着我们可以从理论上知道周期长度、一些结构性质以及关联性等。周期长度会限制样本的大小;结构信息可以是我们确定在仿真中是否存在副作用;关联性质则对随机模拟而言很重要。不言而喻,随机数生成的方法应是快速的,占用内存少的,实现简单,可移植,可并发执行,对于不同的参数都应当具有均匀的速度。更加重要的检测内容是对其统计性质的检测。统计检验又分为两类:一类是理论检验,另一类是经验检验。先来说说理论检验。顾名思义,理论检验是先验的检验,能够预先告诉我们这些检验的结果将会是如何。如前所述,理论检验主要是检验随机数的周期,内在结构和关联性。发展这一类型的理论十分困难,至今的得到的结果一般是对整个周期的统计检验。对于线性同余算法得到的随机数,周期长度的平方根是一个比较好的样本大小的上限。因此对于一个好的生成器,必须能够使得对于某些参数能够得到最大的周期长度,并且能够计算出这样的参数。比如对于线性同余算法而言,最好的乘数是,模是.这个观点在很多书籍和论文中都有推荐,但是随着计算机计算能力的提高,这个观点已经不合时宜啦。因为对于现代的计算机而言,这样的周期还是太短了,现在而言m不应小于.生成器的内部结构如栅栏结构和超平面点的分布也很重要。对于不同的生成器有特定的检测方法。结构检测用到最多的就是谱检验,谱检验就是基于相邻平行超平面之间最大距离的检验,该距离越大,生成器越差。如下图所示:上图中随机数主要保持在平面内。对于二维的情况如下图所示:图中我们可以用少量的平行线来全部覆盖它们,由许多不同的平行线族,它们将会碰上所有的点。平行覆盖线的数目是一个重要的指标。图中我们可以用少量的平行线来全部覆盖它们,由许多不同的平行线族,它们将会碰上所有的点。平行覆盖线的数目是一个重要的指标。将随机数生成器应用在并行进程中尤其要注意的是随机数之间是否关联,即独立性检测。比如用线性同余算法得到的均匀分布经Box-Muller转换成正态分布得到的点落在一条螺旋线上,如下图:从理论上可以证明所有的线性和非线性同余序列都存在长周期相关现象。如果几个并行处理器分别使用同一个同余序列的不同段落,分割时就应该避开具有强相关的分点。以上的3副图给人一种触目惊心的感觉,没想到我们平常用到最多的线性同余算法产生的随机数是如此的”不随机“,我想这种震撼类似于第一次用显微镜观察微生物发现一个不可思议的微观世界。的确,这类似于我们用超高分倍率的显微镜来观察我们得到的随机数,只有对于很精确的应用情境这种观察才是有价值的,否则只是杞人忧天、庸人自扰了。在这种情况下,简单的线性同余序列肯定是不适用的,应当使用具有更大周期的生成序列,尽管实际上只要生成这个周期中的很小的一部分。理论检验是不够的,我们还需要经验检验。经验检验性对较简单,且有很多的方法。比如:等分布检验:又称均匀性检验,将【0,1[】区间分成k个相等的子区间,落在每个子区间的伪随机数个数应该相等。常用的是检验。序列检验:相继的数偶独立一致分布。计算的是数偶对的出现次数。间隔检验:用来考察在某个范围内序列的出现的间隔长度。扑克检验:考虑5个相继整数组成的n个组,观察其出现模式。........经验检验还有很多,不一一赘述了。当然即使通过了所有的统计测试,这也不能证明什么,但是这提高了我们使用这个生成器的信心。对于实际应用中,应该对不同的应用场景选择合适的生成器。当然也有一些通用的测量方法来告诉我们该生成器是否有可能是一个好的生成器。对于并行应用来说,很多通常情况下很好的生成器都不合适。我们可以为k个进程选择k个生成器,虽然这也不是一个很好的方法。通用的方法如下:有一个比喻:随机数生成器就像抗生素,每一种都有副作用,没有安全的随机数生成器。好的随机数生成器应该是有理论检验的支持,充分的经验证据和良好的实际表现。遵循以下一些建议对于合理使用随机数生成器很有帮助:不要相信只由一个生成器得到的随机数序列,在使用前用不同的生成器检验它们的结果。不要在没有理论依据和经验支持的情况下将几种生成器结合起来或并行。在使用前了解生成器的特性。以上
一个比较简单的方法,用随机数填充一个位图,下面是一个填充黑白图像的例子。这个是用C#的System.Random类生成的随机数填充的位图这个是用php的rand函数生成的随机数填充的位图哪个比较差一目了然。
有一系列的测试可以判断一个随机数生成器的优劣。NIST发布了一个工具包专门用来做这件事情。网页为英文,而且我不知道是否需要翻墙。
nist随机性测试方法频数测试:测试二进制序列中,“0”和“1” 数目是否近似相等。如果是,则序列是随机的。块内频数测试:目的是确定在待测序列中,所有非重叠的 长度为M位的块内的“0”和“1”的数目是否表现为随机分布。如果是,则序列是随机的。游程测试:目的是确定待测序列中,各种特定长度的 “0”和“1”的游程数目是否如真随机序列期望的那样。如果是,则序列是随机的。块内最长连续“1”测试:目的是确定待测序列中, 最长连“1”串的长度是否与真随机序列中最长连“1”串的 长度近似一致。如果是,则序列是随机的。矩阵秩的测试:目的是检测待测序列中,固定长度子序列的线性相关性。如果线性相关性较小,则序列是随机的。离散傅里叶变换测试:目的是通过检测待测序列的周期性质,并与真随机序列周期性质相比较,通过它们之间的偏离程度来确定待测序列随机性。如果偏离程度较小,序列是随机的。非重叠模板匹配测试:目的是检测待测序列中,子序列是否与太多的非周期模板相匹配。太多就意味着待测序列是非随机的。重叠模板匹配测试:目的是统计待测序列中,特定长度的连续“1”的数目,是否与真随机序列的情况偏离太大。太大是非随机的。通用统计测试:目的是检测待测序列是否能在信息不丢失的情况下被明显压缩。一个不可被明显压缩的序列是随机的。压缩测试:目的是确定待测序列能被压缩的程度,如果能被显著压缩,说明不是随机序列。线性复杂度测试:目的是确定待测序列是否足够复杂,如果是,则序列是随机的。连续性测试:目的是确定待测序列所有可能的m位比特的组合子串出现的次数是否与真随机序列中的情况近似相同,如果是,则序列是随机的。近似熵测试:目的是通过比较m位比特串与m-1位比特串在待测序列中出现的频度,再与正态分布的序列中的情况相对比,从而确定随机性。部分和测试:目的确定待测序列中的部分和是否太大或太小。太大或太小都是非随机的。随机游走测试:目的是确定在一个随机游程中,某个特定状态出现的次数是否远远超过真随机序列中的情况。如果是,则序列是非随机的。随机游走变量测试:目的是检测待测序列中,某一特定状态在一个游机游程中出现次数与真随机序列的偏离程度。如果偏离程度较大,则序列是非随机的。参考 测试程序前面有人给过了,这里重复一下地址 类似的测试标准和程序还有diehard
这个项目里面有开源的ENT测试。主要测试有五项。详细信息见链接
发现没有人提到 TestU01 ()TestU01是一套用于对随机数生成器(RNG)进行经验测试的工具,包括了各种文献中提到的测试方法,以及一些实际问题中会遇到的情况测试。它的整套测试被称作Big Crush,是目前最严格的随机数测试套件,它可以很好地检测一个随机数生成器的可靠程度(确实十分Big,在一台个人电脑上单核跑一次需要几小时)。通常认为在通过Big Crush的前提下越快的算法越值得使用。事实上对现在广为流行的各种看上去靠谱的随机数生成器(包括好多人提到的MT19937之类的)进行Big Crush测试的时候都有不少问题,反而是一种十分“简单”的算法LCG(线性同余生成器)表现相当良好。见下图。(顺便忍不住安利一下PCG family)居然只有7种RNG通过了测试,然后下图是这些RNG的速度测试(绿色的是通过测试的):居然只有7种RNG通过了测试,然后下图是这些RNG的速度测试(绿色的是通过测试的):在这些常见的RNG中用于存储随机数状态的空间使用也有所不同(越低越好):在这些常见的RNG中用于存储随机数状态的空间使用也有所不同(越低越好):一个RNG的成效是跟它的状态空间大小密切相关的,我们可以计算出使得每一种随机数生成器能够通过Big Crush的最小状态数,实际使用的时候多出来的那些空间被定义叫做Headroom。同样这里有一张直观的图:一个RNG的成效是跟它的状态空间大小密切相关的,我们可以计算出使得每一种随机数生成器能够通过Big Crush的最小状态数,实际使用的时候多出来的那些空间被定义叫做Headroom。同样这里有一张直观的图:可以注意到不少人喜欢的XorShift算法到96 bits的时候都没能通过测试,而XorShift*算法十分靠谱地在40 bits时即通过了所有测试。同时我们发现虽然前面的图表中发现LCG的表现很好,但实际上它的Headroom并没有很大(88 bits的状态空间才通过Big Crush)。可以注意到不少人喜欢的XorShift算法到96 bits的时候都没能通过测试,而XorShift*算法十分靠谱地在40 bits时即通过了所有测试。同时我们发现虽然前面的图表中发现LCG的表现很好,但实际上它的Headroom并没有很大(88 bits的状态空间才通过Big Crush)。PCG生成器只是对普通的LCG的一点点小改进,P表示的是Permuted,也就是对生成的随机数进行了一些处理使得它更加”随机“,如图所示:并且它的速度也十分可靠:并且它的速度也十分可靠:(以上数据和图表均源自:)
据我所知,卡方检测是一个比较有效的方法;还有一个方法就是以该随机数发生器为基础,用蒙特卡洛方法求高维数值积分(例如n维球的体积和面积),如果随机数生成器足够好,积分结果应该能很好地逼近理论值。
发现上面都是程序达人=.=作为小策划的我不太懂程序,从我自己的角度去重新定义下对我在设计游戏时对随机数的需求题主问的是如何判断伪随机数生成算法的优劣,从我的角度认为,达到设计需求的随机就是优秀的无论它是真或假,是否满足那个k1234其它领域不熟就不说,就游戏领域,我认为游戏领域不需要优秀的真随机,需要的都是优秀的伪随机。酷跑,我需要随机拼接场景,道具,分值,以达到不单调重复的目的。但是我又需要控制游戏节奏,用户的体验节奏,因此我需要根据用户的得分情况,失误操作去设置一堆的阀值,来调整随机规则,让用户不断产生一种错觉,这只是失误,就差一点点,都是因为xxx同理可推,抽奖、掉落、攻击、爆击、合成等。个人以为,在实际应用领域,满足设计需求的伪随机比算法优秀的真随机优秀太多太多,当然一切前提是说明随即需求,很多时候设计者自己都说不清他的随机需求是啥,只是觉得需要随机。也许只有现实才是真随机,当然,也有可能我们一直生活在我们看不见的伪随机规则之内,突然想到四个字,道法自然
看《TAOCP》第二卷
由于随机数是密码学中最为重要的安全组件,你可以参考相应密码学文献来生成随机数和伪随机数。从理论上说,任何伪随机数的生成方案破解等同于求解一个数学难题,从然后实践上讲,首先应该通过李楠讲到的nist测试包。已经记不太清楚,大致需要通过20种不同的攻击测试。如果你是想用而已,可以使用一些现成的加密算法库来用。如果是想自己弄,建议还是到此为止。各类无线通信协议的安全漏洞首先都是从随机数中冒出来的。随机数是密码学的一个大坑,都搞了几十年了。不懂就别弄,后果很严重。
已有帐号?
无法登录?
社交帐号登录小木虫 --- 500万硕博科研人员喜爱的学术科研平台
&&查看话题
【求助】用线性同余法得到的随机数,怎么证明它是随机数?
用C语言编的小程序,用的是线性同余法,得到一组随机数据。
怎么证明得到的数是随机数?
网上的看了,他们的证明都是证明一些(0,1)之间的数,并且不怎么看得懂。因为不是数学出身,请给出具体的例子。或者给指点一下,给个链接,需要看什么文章,谢谢!!金币就这么多,都献上了。真的很需要证明的方法,谢谢!!!!
你可以先把它们映射到【0,1】间,再证明。
研究生必备与500万研究生在线互动!
扫描下载送金币
浏览器进程
打开微信扫一扫
随时随地聊科研}

我要回帖

更多关于 matlab均匀分布随机数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信