-
-
[原创]新型随机数生成方式
-
2015-7-19 20:52
5665
-
现在生成随机数组一般都利用随机函数,随机函数都是由公式组成。由一个或几个公式经运算得到源源不断的随机函数值,公式中的系数至关重要,取不同的值对函数影响很大,有的参数值可能造成缺员、周期短小、有死点。优选参数需要做大量试验,运算量不是一般微机能承受的。并且由于其发生原理的原因,造成数据之间的相关性较大,一般是这次函数的输出值作为下一个函数值的种子,所以很难造出比较理想的,也就是随机性强的数组。
这种新的随机函数的随机数发生方式完全不同,它完全是构造出来的,而不是由公式生成的,先将数组的元素备齐,然后对数据进行加工,首先在成员上实现了绝对均匀,数据加工也很简单只用洗牌算法(随机排序)即可。并且生成的数组是没有周期,也绝不会有死点。如果将老式随机函数看成是串行处理,它比较类似并行处理。
随机排序的实现:用一个或多个老式随机函数来完成效率比较高。往往一个循环的随机排序就能达到足够的混乱程度。不使用随机函数,在交换序号的算式中使用一些随机性强的数据也一样可以生成随机数组但这样效率较低,一遍随机排序循环不一定令人满意,一般需要多次循环。
数据的混乱程度有定律作保证。随机排序,相当于多种因素作用于数组数据,根据热力学第二定律,混乱程度只能增加而不可能做相反的变化。例如我们将围棋的黑白棋子混在一起,你拿棍子去搅动,只能是越来越混乱,而不能向相反的方向发展。
虽然新型随机数发生方式有许多优点,它们能产生分布均匀,相互之间不相干的数据,但它同老式随机函数一样是可以控制的,你可以从多方面控制最终的数组形态,例如可以从 1)初始数组。2)排序方式。3)运算次数。等方面下手,只要条件一样结果也是相同的。新随机数生成方式对数据的处理是灵活的,一组数据加工好以后,还可以进行多次加工,每次将得到完全不同的结果。最大特点是数据之间没有关联,这一点可以和真随机数媲美。但比真随机数好用的多,因为它是可控的,而真随机数是不可控的。这样在密码学里就可以使用它们作为密钥数组,来完成数据加密。
在密码学里一定要使用外部的变数来控制密钥数组的建立,否则只要读懂了程序秘密也就不存在了。外部的变数就是用户密码,用它们的衍生值来控制密钥数组的建立才能确保信息的安全。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课