伪随机数生成算法

常用方法为线性同余法

初始值有4个整数,模数m,乘数a,增量c,种子s

2<=a<m,0<=c<m,0<=s<m

xn = (axn-1+c)mod m

实际使用中m和a的值都取得比较大

其中一组为

m = 232 - 1,a = 75  = 16807,c = 0

时间: 2024-10-23 16:26:18

伪随机数生成算法的相关文章

如何评价一个伪随机数生成算法的优劣

以下来自我在知乎的回答.http://www.zhihu.com/question/20222653 谈到随机性,这大概是一个令人困惑哲学问题吧.随机行为精确地说究竟指的是什么,最好是有定量的定义.Kolmogorov曾提出一种判定随机性的方法: 对于无穷的随机数序列,无法用其子序列描述.J.N.Franklin则认为:如果一个序列具有从一个一致同分布的随机变量中独立抽样获得的每个无限序列 都有的性质,则是随机的.这些定义都不是很精确,有时甚至会导致矛盾.可见数学家在谈到这个问题时是多么的审慎.

Redis源码中看伪随机数生成算法

导读 --------------------------------------------------------------------------------------------------------------------------------------------------------------         Redis源码中有一个rand.c的源文件,很明显这是一个和(伪)随机数有关的文件.细看该文件代码只有寥寥50行,不过涉及到的算法原理却不简单,读起来虽然有些晦

[计算机漫谈]伪随机数生成方法

大家好.今天说点儿关于程序设计过程中产生随机数的方法. (一)JAVA伪随机数生成方法 随机数在程序设计过程中,特别是在实践环境模拟和测试等领域中得到很广泛的应用,我们在编程的过程中也时不时需要使用到随机数.计算机中的随机数,并不是真正的随机数,而是叫做"伪随机数",是计算机通过某种特别算法模拟产生的. 在JAVA语言中,我们可以通过Math类的random方法产生区间[0,1)的随机数,若要产生[a,a+b)之间的伪随机数,可以通过语句 a + b * Math.random();

伪随机数生成方法

大家好.今天说点儿关于程序设计过程中产生随机数的方法. (一)JAVA伪随机数生成方法 随机数在程序设计过程中,特别是在实践环境模拟和测试等领域中得到很广泛的应用,我们在编程的过程中也时不时需要使用到随机数.计算机中的随机数,并不是真正的随机数,而是叫做"伪随机数",是计算机通过某种特别算法模拟产生的. 在JAVA语言中,我们可以通过Math类的random方法产生区间[0,1)的随机数,若要产生[a,a+b)之间的伪随机数,可以通过语句 a + b * Math.random();

等高线生成算法(转载)

等高线生成算法 输入:离散的采样点坐标和高度值(x_0,y_0,value_0),(x_1,y_1,value_1)......(x_n, y_n, value_n) 输出:等高线图,如下所示 wiki上的Marching squares算法对此有很好的说明,我也是按照wiki上面的步骤来实现这个算法的,下面对该算法的步骤进行简要说明. 输入参数: 1.点的集合(x_0,y_0,value_0),(x_1,y_1,value_1)......(x_n, y_n, value_n) ; 2.高度值

清华版CG 实验2 直线生成算法实现

1.实验目的: 理解基本图形元素光栅化的基本原理,掌握一种基本图形元素光栅化算法,利用OpenGL实现直线光栅化的DDA算法. 2.实验内容: (1) 根据所给的直线光栅化的示范源程序,在计算机上编译运行,输出正确结果: (2) 指出示范程序采用的算法,以此为基础将其改造为中点线算法或Bresenham算法,写入实验报告: (3) 根据示范代码,将其改造为圆的光栅化算法,写入实验报告: (4) 了解和使用OpenGL的生成直线的命令,来验证程序运行结果. 3.实验原理: 示范代码原理参见教材直线

微信红包生成算法 (解)

/** * 微信红包生成算法 * * @param int $total 红包金额 * @param int $num 拆分数量 * @param int $min 拆分的红包最小金额数目 */function set_packet($total, $num, $min = 0.01){ for ($i = 1; $i < $num; $i++) { //随机安全上限 $safe_total = ($total-($num-$i)*$min)/($num-$i); //红包金额 $money =

[迷宫中的算法实践]迷宫生成算法&mdash;&mdash;Prim算法

       普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小.该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch Jarník)发现:并在1957年由美国计算机科学家罗伯特·普里姆(英语:Robert C. Prim)独立发现:1959年,艾兹格·迪科斯彻再次发现了该算法.因此,在某些场合,普里姆

计算机图形学(二)输出图元_6_OpenGL曲线函数_1_圆生成算法

OpenGL曲线函数 生成圆和椭圆等基本曲线的函数并未作为图元功能包含在OpenGL核心库中.但该库包含了显示Bezier样条的功能,该曲线是由一组离散点定义的多项式.OpenGL实用库(GLU)中包含有球面和柱面等三维曲面函数以及生成B样条的函数,它是包含简化Bezier曲线的样条曲线的总集.我们可以使用有理B样条显示圆.椭圆和其他二维曲线.此外,OpenGL实用工具包(GLUT)中还有可以用来显示某些三维曲面(如球面.锥面和其他形体)的函数.然而,所有这些函数比本章中介绍的基本图元应用得更多