当前位置:首页 » 操作系统 » 随机数生成算法

随机数生成算法

发布时间: 2022-01-22 06:02:51

‘壹’ 求一个随机数生成算法,时间复杂度低。当随机选了一个数,之后在其余数中随机抽,每次也是这样,即是不可

用一个list存放所有你需要的数,然后每次抽取随机一个大小在list长度的值,然后list取出该index的值,然后删除,依次循环。这个简单也不会造成取相同值的问题。

‘贰’ 电脑随机数产生的计算具体方法

实现的方法和详细的操作步骤如下:

1、第一步,为main函数指定一个函数,如下图所示,然后进入下一步。

‘叁’ 如何快速生成随机数 RSA算法

可以采用32bit RSA算法
设A从2~(N-1)
C=(A EXP D) mod N
满足如下条件:
D是素数,N是两个素数(P,Q)之积,
(D * E) mod ((P-1) * (Q-1))=1
因为:若
C=(A EXP D)mod N
有:
A=(C EXP E) mod N
所以,C与A 一一对应。
所以,对于A=2~(N-1),有不重复,无遗漏的伪随机码C。
凡是稍微扯上一点数学,尤其是高等数学的问题,我等泛泛之辈看起来就有点费劲,这里虽然文字不长,但是还得慢慢来看。
这里面RSA算法是密码学三大算法之一(RSA、MD5、DES),是一种不对称密码算法。说如果满足条件:D是素数,N是两个素数(P,Q)之积,(D * E) mod ((P-1) * (Q-1))=1,那么存在C与A(范围从2到N-1)一一对应,且C=(A EXP D)mod N。A是一个有顺序的数,C就是一个看似无规律的伪随机数。Mod运算表示求模,例如7Mod3=1。意思是7除以3余1。类似地8Mod3=2,9Mod3=0。EXP表示前面数的后面数次方,AEXPD表示A的D次方。这两个运算清楚了,其它的也就没什么困难的了,*是乘法的意思,大多数理科生都清

‘肆’ 如何能算法生成真随机数

K1——相同序列的概率非常低

K2——符合统计学的平均性,比如所有数字出现概率应该相同,卡方检验应该能通过,超长游程长度概略应该非常小,自相关应该只有一个尖峰,任何长度的同一数字之后别的数字出现概率应该仍然是相等的等等
K3——不应该能够从一段序列猜测出随机数发生器的工作状态或者下一个随机数
K4——不应该从随机数发生器的状态能猜测出随机数发生器以前的工作状态

‘伍’ 256bit随机数生成算法

string Get256BitRandom()
{
STRING result = \"\";
for(int i=0;i<8;i++)
{
result += (string)RANDOM(int);
}
return result;
}

‘陆’ 随机数的计算公式是什么

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

‘柒’ java怎么进行随机数生成算法

要产生随机数,可以使用Java api中java.lang包中的Math类.Math类以静态方法的方式提供常用的数学方法,
其中Math.random()方法是一个可以产生[0.0,1.0]区间内的一个双精度浮点数的方法
如:
产生一个100以内的整数:int x=(int)(Math.random()*100);
又如:
产生一个1-50之间的随机数:int x=1+(int)(Math.random()*50)
也可以使用通用创建对象来获取:
Random random = new Random();
random.nextInt(x);
产生一个0到x-1的正数,如果想产生浮点数有Random类的nextFloat方法,总之nextXXX方法是用来产生随机数的。

‘捌’ 随机数生成方案(计算方法)

诺依曼的平方数取中法。
先通过求关键码的平方值,从而扩大相近数的差别,然后根据表长度取中间的几位数(往往取二进制的比特位)

‘玖’ 随机数算法是什么

在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字重复率很低,这样看起来好象是真正的随机数,实现这一功能的程序叫伪随机数发生器。有关如何产生随机数的理论有许多如果要详细地讨论,需要厚厚的一本书的篇幅。不管用什么方法实现随机数发生器,都必须给它提供一个名为“种子”的初始值。而且这个值最好是随机的,或者至少这个值是伪随机的。“种子”的值通常是用快速计数寄存器或移位寄存器来生成的。下面讲一讲在C语言里所提供的随机数发生器的用法。现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下:”)首先给srand()提供一个种子,它是一个unsignedint类型,其取值范围从0~65535;2)然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)3)根据需要多次调用rand(),从而不间断地得到新的随机数;4)无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。这个过程看起来很简单,问题是如果你每次调用srand()时都提供相同的种子值,那么,你将会得到相同的随机数序列,这时看到的现象是没有随机数,而每一次的数都是一样的了。例如,在以17为种子值调用srand()之后,在首次调用rand()时,得到随机数94。在第二次和第三次调用rand()时将分别得到26602和30017,这些数看上去是很随机的(尽管这只是一个很小的数据点集合),但是,在你再次以17为种子值调用srand()后,在对于rand()的前三次调用中,所得的返回值仍然是在对94,26602,30017,并且此后得到的返回值仍然是在对rand()的第一批调用中所得到的其余的返回值。因此只有再次给srand()提供一个随机的种子值,才能再次得到一个随机数。下面的例子用一种简单而有效的方法来产生一个相当随机的“种子”值----当天的时间值:g#椋睿悖欤酰洌澹Γ欤簦唬螅簦洌椋铮瑁Γ纾簦弧。#椋睿悖欤酰洌澹Γ欤簦唬螅簦洌欤椋猓瑁Γ纾簦弧。#椋睿悖欤酰洌澹Γ欤簦唬螅螅Γ#矗罚唬簦穑澹螅瑁Γ纾簦弧。#椋睿悖欤酰洌澹Γ欤簦唬螅螅Γ#矗罚唬簦椋恚澹猓瑁Γ纾簦弧。觯铮椋洹。恚幔椋睿ǎ觯铮椋洌。。椋睿簟。椋弧。酰睿螅椋纾睿澹洹。椋睿簟。螅澹澹洌郑幔欤弧。螅簦颍酰悖簟。簦椋恚澹狻。簦椋恚澹拢酰妫弧。妫簦椋恚澹ǎΓ幔恚穑唬簦椋恚澹拢酰妫弧。螅澹澹洌郑幔欤剑ǎǎǎǎ酰睿螅椋纾睿澹洹。椋睿簦簦椋恚澹拢酰妫簦椋恚澹Γ幔恚穑唬埃疲疲疲疲。ǎ酰睿螅椋纾睿澹洹。椋睿簦簦椋恚澹拢酰妫恚椋欤欤椋簦恚蕖。ǎ酰睿螅椋纾睿澹洹。椋睿簦簦椋恚澹拢酰妫恚椋欤欤椋簦恚弧。螅颍幔睿洌ǎǎ酰睿螅椋纾睿澹洹。椋睿簦螅澹澹洌郑幔欤弧。妫铮颍ǎ椋剑埃唬椋Γ欤簦唬保埃唬椋。穑颍椋睿簦妫ǎΓ瘢酰铮簦唬ィ叮洌Γ#梗玻唬睿Γ瘢酰铮簦籦egjrand());}上面的程序先是调用_ftime()来检查当前时间yc并把它的值存入结构成员timeBuf.time中wae当前时间的值从1970年1月1日开始以秒计算aeh在调用了_ftime()之后在结构timeBuf的成员millitm中还存入了当前那一秒已经度过的毫秒数,但在DOS中这个数字实际上是以百分之一秒来计算的。然后,把毫秒数和秒数相加,再和毫秒数进行异或运算。当然也可以对这两个结构成员进行更多的计算,以控制se......余下全文>>

‘拾’ 真的有能产生完全随机数的算法吗

计算机本来就没办法实现真正的随机,它本来就是按逻辑来运行的,产生的所谓随机数全部都是伪随机,最多只能做到范围足够大,产生规律足够复杂,感觉像是随机而已。

热点内容
网易苹果游戏怎么转移到安卓 发布:2024-11-15 00:07:52 浏览:270
win7php环境搭建 发布:2024-11-15 00:06:55 浏览:17
erpjava 发布:2024-11-14 23:52:23 浏览:253
电脑版地平线四怎么连上服务器 发布:2024-11-14 23:46:42 浏览:472
ios怎么变安卓 发布:2024-11-14 23:46:36 浏览:333
win7共享xp打印机拒绝访问 发布:2024-11-14 23:45:29 浏览:750
引起资源配置失效的原因有哪些 发布:2024-11-14 23:35:22 浏览:15
c语言打字 发布:2024-11-14 23:11:06 浏览:893
存储程序和程序控制的原理 发布:2024-11-14 22:53:23 浏览:323
python读取json数据 发布:2024-11-14 22:51:52 浏览:931