计算机中的random一词通常与生成随机数或者在一组元素中选择随机元素等相关概念有关。在编程中,我们经常需要使用随机数来模拟真实世界的情况或者实现一些特定的功能。
计算机的random来源主要有以下几种方法:
物理现象:
真正的随机数是通过物理现象产生的,比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。
伪随机数生成器:
在计算机系统中,大部分情况下使用的都是伪随机数。伪随机数并不是真正的随机数,它不是随机的,而是通过一个固定的公式迭代产生的。常见的伪随机数生成算法包括线性同余法,即确定一个种子N_0,然后通过递推公式N_{n+1} = (N_n × A + B) (\mod M) 确定下一个数字。计算机或计算器产生的随机数有很长的周期性,它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。
系统信息:
有些情况下,计算机可以通过获取系统信息来生成随机数,比如CPU频率与温度的不确定性、统计一段时间的运算次数、系统时间的误差以及声卡的底噪等。这些方法可以产生更为随机的数,但在实际应用中往往使用伪随机数就足够了。
在编程中,不同的编程语言提供了不同的随机数生成函数。例如:
C语言:使用rand()函数和srand()函数生成伪随机数。rand()函数返回一个0至RAND_MAX间的随机数,srand()函数用于设置随机数生成器的种子。
C++:可以使用
Java:使用java.util.Random类生成伪随机数。Random类提供了生成各种类型随机数的方法,如nextInt()、nextDouble()等。
总结起来,计算机中的random主要通过物理现象、伪随机数生成器以及系统信息等方法产生。在大多数应用中,伪随机数已经足够满足需求,但在一些对随机性要求极高的场合,如密码学,会使用真正的随机数。