随机数

来自计算思维百科
跳转至: 导航搜索
随机数.png

随机数是一种随机产生的数字,主要用于进行随机试验测试,或是产生一个随机的状态,例如彩票抽奖。

基本概念

真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。

在实际应用中往往使用伪随机数就足够了。这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。计算机或计算器产生的随机数有很长的周期性。它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。这样的发生器叫做伪随机数发生器。

应用范围

在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中。在真正关键性的应用中,比如在密码学中,人们一般使用真正的随机数,随机性也是密码难以破解的主要原因。

使用方法及步骤

C语言、C++、C#、Java、Matlab等程序语言和软件中都有对应的随机数生成函数,如rand函数。

为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过为随机数生成器提供一粒新的随机种子。函数 srand()(来自stdlib.h)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器。

应用案例

应用1-掷硬币

案例:当我们要探究是否掷一枚硬币正面也反面出现的概率是一样的时候,我们不可能只掷一两次就轻率的得出结论,我们需要大量的掷硬币的结果来探究这个问题。所以我们掷的次数越多越可以得到更准确的结论,因此决定要掷一万次硬币为基础来探究这个问题。

解决步骤:

但是现实中我们不可能投掷一万次硬币,这实在是太麻烦了。因为掷硬币的结果正、反面是随机的所以我们要利用计算机随机的产生1(代表正面)和0(代表反面)一万次来验证结果。

rand()%2 表示的就是一个随机产生的数字对2求余,结果就是0或者1。所以我们就可以很简单的得到随机扔出一个硬币的正反面的结果从而进行结果的检验。 

应用2- 密码设置

案例: 现在有一个非常重要的东西需要保存起来,为了不让别人知道密码打开保险箱,所以不能设置和本人有关的数字字母作为密码(例如生日、电话号码、缩写等)。你该如何设置密码?

解决步骤:此时,需要的就是有几个完全随机的数字、字母来组成这个密码。这个密码将无法根据你的个人信息进行破解。可以利用计算机随机函数产生的结果作为密码。

应用3- 双色球彩票

案例:双色球是中国福利彩票的一种玩法。由中国福利彩票发行管理中心统一组织发行,双色球投注区分为红色球号码区和蓝色球号码区,红色球号码区由1-33共三十三个号码组成,蓝色球号码区由1-16共十六个号码组成。投注时选择6个红色球号码和1个蓝色球号码组成一注进行单式投注。

解决步骤:摇奖时候的摇奖机器将内部的写有数字的小球随机的摇出,摇出的7个数字按顺序作为中奖的号码,这里的摇奖机就是一种随机数生成的思想。


可以体现的计算思维

随机数体现计算思维的抽象特点。将自然界存在的随机现象抽象为一个随机的数字,便于计算机程序处理不同领域中的随机问题。