【程序设计】随机数

随机数

随机数是出现没有任何规律也不可预测的一些数字,用途广泛。

根据密码学原理,随机数的随机性检验可以分为三个标准:

  • 统计学伪随机性:统计学伪随机性指的是在给定的随机比特流样本中,1的数量大致等于0的数量,同理,“10”、“01”、“00”、“11”四者数量大致相等。类似的标准被称为统计学随机性。满足这类要求的数字在人类“一眼看上去”是随机的。
  • 密码学安全伪随机性:其定义为,给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分。
  • 真随机性:其定义为随机样本不可重现。实际上只要给定边界条件,真随机数并不存在,可是如果产生一个真随机数样本的边界条件十分复杂且难以捕捉(比如计算机当地的本底辐射波动值),可以认为用这个方法演算出来了真随机数。

相应的,随机数也分为三类:

  • 伪随机数:满足第一个条件的随机数。
  • 密码学安全的伪随机数:同时满足前两个条件的随机数。可以通过密码学安全伪随机数生成器计算得出。
  • 真随机数:同时满足三个条件的随机数。

Random随机函数

通常,随机函数Random()的取值是[0.0,1.0)间的浮点数,取值分布与分布函数有关,比较理想的是均匀分布。

想要产生从整数M开始到M+N之间随机整数,可以用如下公式:Floor(Random*N)+M

例如,取4~13之间的随机整数,可以用Floor(Random*10)&

你可能感兴趣的:(#,SE-Programming,算法,概率论,随机数,程序设计)