当前位置: 主页 > JAVA语言

java随机数生成器-在线生成数据统计图表

发布时间:2023-04-10 11:06   浏览次数:次   作者:佚名

生成随机数的算法众多,以下简单列出几个:

1.平方取中法

伪随机数的概念从很远古的时候就出现了,而第一个应用与计算机的随机数生成器是由我们的祖师爷:冯·诺依曼首先提,所使用的算法是平方取中法,算法举例如下:

假设,取123作为种子,将他平方得到15129,而后取中间三位51。

java生成xsd_在线生成数据统计图表_java随机数生成器

2,继续平方得到262144,在前面补零,取中间三位621。。。以此继续。。。

但这一算法并不算好,随机数收敛较快java随机数生成器,很快就能得到有序的循环数列。

2.线性同余法

线性同余生成器(Linear Congruential Generator)是数学家 D.H.Lehmer率先使用于java,以实现网页上广告的随机展示。

在线生成数据统计图表_java生成xsd_java随机数生成器

线性同余法是一种较简单常用的伪随机数算法。非常创新的一个seed字符串确定一个世界java随机数生成器,《我的世界》就是以一个种子,取hashcode,再利用此算法得到固定的伪随机数,加上柏林噪音得到确定的地形,再根据地形高度确定该区域环境实现的。同理,《无人深空》的2^64个星球实现原理也是类似。

根据递归公式N(j+1)=(A*N(j)+B)mod M

其中,A,B,M为常数,N(0)为需要给定的种子。

要令LCG达到最大周期,应该符合:

java生成xsd_在线生成数据统计图表_java随机数生成器

(1)B与M互质;

(2)M的所有质因子的积能整除A-1;

(3)若M是4的倍数,则A-1也是;

(4)A,B,N(0)都比M小;

java随机数生成器_在线生成数据统计图表_java生成xsd

(5)A,B是正整数。

通常来说,M都使用2的几次幂(2^32或2^64),因为这样取模时,就截断最右的32/64位就行了。很多编译器都是使用线性同余生成器来实现随机数的,而很多时候是使用时间来作为种子,例如早期的最终幻想,他的特定稀有怪物,和物品掉落就是以时间作为种子。

java生成xsd_在线生成数据统计图表_java随机数生成器

下面,以最简单的形式模拟下:

java生成xsd_在线生成数据统计图表_java随机数生成器

在线生成数据统计图表_java随机数生成器_java生成xsd

在线生成数据统计图表_java随机数生成器_java生成xsd

游戏蛮牛及其母公司(英宝通科技),已经成为海外社交流量最大的公司FaceBook中国区优质广告合作伙伴。接下来一年内,游戏蛮牛携FaceBook将围绕游戏出海进行全国10场以上的沙龙,从线下线上全维度帮助开发者提供更多的出海商业化服务。

四场齐发!!!广州(6月26日) 武汉(6月28日)北京(待定) 上海(待定)

快来报名吧!