0%

随机数的性质

随机数的性质

随机性

顾名思义, 就是生成的随机数数列具有杂乱无章的性质的性质, 即, 无规律性, 生成的序列应该无统计数偏差。

例如:

若生成的序列为 1, 2, 3, 4, 5, 6 .... 这样的与序列相关的, 异或是 1, 2, 3, 1, 2, 3, 1, 2, 3 这样的周期性的, 异或是 6, 1, 6, 2, 6, 6 , 1, 6 这样某一个或者几个特殊元素优于其他元素大概率出现的, 则是不具有随机性的表现。

不可预测性

不可以预测性指的是, 在得知已经生成了的随机序列和随机算法的情况下, 也无法预测接下来随机的结果会是什么的性质。

要满足该性质,那么必然要满足, 从后一个或者多个随机数中, 无法反推出随机数生成器的内部状态的性质。

如果一个随机数生成器能满足不可预测性, 那么它一定是满足随机性的。

不可重现性

不可重现性指的是, 在至少具备了所有相同的初始条件下, 通过生成器两次或者多次生成的随机数数列不相同, 即, 没有办法重现某次输出的随机数列。

仅使用软件无法实现具有不可重现性的随机数生成器。

如果一个随机数生成器能满足不可重现性, 那么它一定是满足不可预测性的。

真随机?

只具备随机性和不可预测性的随机数叫做伪随机数, 具备不可重现性的随机数叫做真随机数

计算机科学中使用的随机算法

在一般编程语言中, 都会提供两类随机, 例如Java提供了java.util.Random, 但是它并不能用于密码和安全相关的用途, Java另外提供了 java.security.SecureRandom 类用于实现这个用途。

安全相关的用途应该使用安全的随机算法, 不可以直接使用普通的随机