作者:禅与计算机程序设计艺术
1.简介
在编程语言中生成随机数一直是一件很重要的事情,随着越来越多的计算机硬件性能的提升,如何高效地生成随机数也成为一个重要的话题。在本文中,我将会分享十种生成随机数的方法以及它们的优缺点。我并不会详细介绍每一种方法,而只是简单的讲解一下它的原理和用途。希望能给大家带来一些启发。
2.概览
随机数生成方法
随机数(Random number)是指由物理或者数学过程生成的,具有统计规律性的数字序列。它是通过各种方法从一定的初始状态出发,经过一定的计算过程产生出来的。
1.伪随机数生成器 (Pseudo-random number generator PNR)
伪随机数生成器(PNR),又称确定随机数生成器、算法icrgen或系统randomic,是一种用来生成疑似随机数序列的数学模型,包括真随机数生成器等不同类型,但其基本思想和算法却十分相似。其基本原理就是利用一定算法、计时器和种子(Seed)值作为输入参数,产生一个连续的、均匀分布的数列。该数列即为伪随机数序列。这种方法可以对任意输入(包括种子值)产生相同的输出序列,同时也具备不可预测性、随机性和周期性。
2.基于传统型随机数生成器的随机数生成算法
(1)线性congruential generator (LCG)
LCG是一个古典的随机数生成算法,由谢尔顿·威尔逊(