求各种产生随机数的算法

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 09:32:03
求各种产生随机数的算法
xWNWIl2u HpT\(U% KT'J_h0`ۘ`06&K@c9gfkƆUT'#H-G }d VNleg#|ԃwc#jMs8W'"DzHVo_魄y~B]]׿}$¿D[.ڕ4*cPox6jAT27x`0e˶ũXiO1dmpHWr Ґ'%ui^ge)Q>­"YHGVfmy]hCRTq$bjGb_If֖[aU|<ß*/d'lȜƟ*7#S\ZIXVqu'u9sݚ .xg-SMfCLl:Dx_9jF+ˬʐky 6d>d.84hbs?HM\h<1jT̸pٓ Q] xǰYՌ0N]0hƫ|8 Y{D2s[5! vF#]\n\ݪrRqȖ\!,N |2~iBg;m,8m[tX5ƅ8ZB7#:zX_3L?\CY/Q*H_"[s>؇]· |`NJ GZ3-R,KPjGNm<30xtU+ג9[l&f

求各种产生随机数的算法
求各种产生随机数的算法

求各种产生随机数的算法
多的很呀!别撤消呀,千万!\x0d不过几乎都是伪随机数.\x0d随机序列的算法\x0d找到了两个算法,第一个很简单,但可惜不是随机的,第二个是典型的伪随机数算法,可惜要用到2的几百万次方这样巨大的整数,真痛苦\x0d要是有UNIX上计算密码的源代码就好了\x0d第一种做法:\x0df(k) = (k*F(N-1)) mod F(N)其中,\x0dk是一个序列号,就是要取的那个数的顺序号\x0dF(N)是这样一个序列 F(0) = 0,F(1) = 1,F(N+2) = F(N+1)+F(N) (for N>=0)第二种做法V = ( ( V * 2 ) + B .xor.B ...)(Mod 2^n)N+1 N 0 2V是要取的随机数,B是个种子,n是随机数的最大个数\x0d原来这个问题,很高难,不少数学高手都为解决这个问题写了论文,咳咳,偶真是个白痴\x0d呵呵,效果肯定是不错啦,因为用不到很大的表.\x0d至于应用是这样的,比如,你要给每个用户在注册的时候一个ID但有不希望用户在看到自己的ID的时候能知道其他用户的ID,如果用SEQUENCE来生成ID的话,一个用户只要把自己的ID减1就能得到其它用户的ID了.所以要用随机数来做ID,这样用户很难猜到其他用户的ID了.\x0d当然主要的问题是,随机数可能重复.因此希望使用一个随机数做种子用它来确定一组"无规律"的自然数序列,并且在这个序列中不会出现重复的自然数.在这里使用的方法生成的序列并不是没有规律的,只不过这个轨律很难被发现就是了.\x0dXn+1 = (aXn + b) mod c (其中,abc通常是质数)是一种被广泛使用的最简单的随机数发生算法,有研究表表明这个算法生成的随机数基本上符合统计规律,JAVA,BORLAND C等用的都是这个方法,一般只要保证第一个种子是真正的随机数就行了,\x0d下面来说一下重复的问题,\x0d上述方法会有可能出现重复,因为当(aXn + b)有可能是同样的数或者说余数相同的数,因此要想不重复就得变形\x0d偶想到的方法是\x0dXn=(a*n + b) mod c n是一个在1到c之间的整数,a*n + b就是一个线性公式了,且若n不同则a*n + b也不同,它们除上质数c得到的余数也肯定不同,因为 若不考虑a和b而只有n的时候,每次的结果都是n,而线性公式,只不过移动了这条直线的位置和斜率而已,每个结果仍然不会相同的,\x0d为了增加不可预计性,偶又为上面那个公式设计了,随机数种子,于是就变成了这个样子\x0dF(N)=(随机数*(N+随机数))MOD 一个质数\x0d这样就能够产生 1到选定质数之间的一个"无规律"的自然数序列了,只要改变随机数就能改变序列的次序\x0d在应用的时候,要把随机数种子和最后用到的序列号保存到一个表里,每此使用的时候取出来算好,再把序列号更新一下就可以了\x0d具体地说,就是可以建一个表来保存每个序列的随机数种子,然后再为这个序列建一个SEQUENCE就行了然后就SELECT MOD(序列控制表.随机数*(SEQ.NEXTVAL+序列控制表.随机数)),序列控制表.质数)\x0dFROM 序列控制表\x0dWHERE 序列控制表.序列ID=XX就OK了注意 序列控制表.质数 决定了序列的范围

求各种产生随机数的算法 求java算法:如何生成一组不重复的随机数(比如1到10)Random类生成的随机数都会发生重复,但我想求一个随机数算法,不会产生重复的数(算法中不要用if来判定该随机数是否已出现过,否则执行效率 生成随机数独矩阵的算法的算法是?求随机生成10000个数独矩阵的算法. 随机数生成算法是怎样的 计算器如何产生随机数?就是产生随机数的步骤 C++怎么产生随机数?还有产生一定范围的随机数 java程序中如何产生随机数(一个按钮产生一个1~100的随机数) 求程序~ 求一个产生随机数的C语言程序要求在000~999之间产生一个随机数,包含000和999! java如何产生随机数的 求从n个数中抽取随机数的c语言算法. 求数据结构与算法工具书可以当字典查到各种常见算法的书, 算法设计:int rand()是一个能产生(0,65565)的随机数函数,怎么随机产生十个(1,300000)的不相等的数 求个随机数生成器不懂什么真随机数假随机数,只要能给我产生计算器上的效果就行,越快越好,好的在加分. labview随机数发生器里随机数产生的速度如何设定. 如何测试 产生的随机数 是不是真随机数? c# 随机数,会产生两个相同的随机数吗 随机数的概率随机数范围是0到90,一共产生22个随机数,求后一个随机数和前一个随机数相等的概率是多少,补充下,应该是:随机数范围是0到90,一共产生22个随机数,求至少有一次“后一个随 VB中怎样知道随机数产生的次数?我在程序中取了两个随机数,设当这两个随机数的和为50时程序停止.求这次程序运行中随机数产生了多少次?