《基于“主控-从属”及“组合”设计模式的组合余数随机生成器》

珠海强方体育文化用品有限公司

2006 年3月

 

场景:

软件应用中的随机生成器是一个服务对象,其在客户的请求下可以给出一个随机数字。现在主流的软件开发平台如Microsoft.NET和Java框架的类库中都提供随机生成器。其实现方法都是基于某一个算法根据前一个随机数算出下一个随机数。如以下公式:

Xi+1 = F(Xi, N1, N2) (i ≥ 0)

其中N1和N2给出生成的随机数的范围。当给出某一个种子数即初始条件后,就可以给出X0因而可以给出随后的随机数Xi+1 (i ≥ 0)。

问题:

基于以上算法的随机生成器存在着理论上的缺陷。

首先是这类方法的科学性。当给出一定的初始条件后,随后的随机数就是完全确定的,因而并不是随机的。为此可以要求使用者每要求一个随机数都要给出一个不同的初始条件。但人们如果能给出随机的初始条件,那又何须借助某一个算法去算出一个随机数。

其次是这类方法操作上的安全性或公正性。一个骇客或者甚至是实现该算法的编程人员可以通过分析已给出的随机数反算出算法及其初始条件因而可以预测以后将要给出的随机数。

解决方案:

珠海强方体育文化用品有限公司提出的“组合余数随机生成”的数学理论可以尽可能地保证随机数字生成的科学性及公正性。在软件设计中,可以基于“主控-从属”(Master-Slave)设计模式结合“组合”(Composite)设计模式运用该方法。

“主控-从属”设计模式主要的目的是支持容错性,并行计算以及计算准确性。主控组件将工作分配给相同的或语义上相同的从属组件并从从属组件返回的结果中计算最终的结果。组合余数随机数字生成计算的科学性及公正性是这些目的的一个延伸。被组合的随机生成器为从属生成器。组合生成器为主控生成器。可以在单机或分布式环境下实现。从属生成器可以结合人机交互的方式,以及加密及认证等安全的方式。

结合“组合”设计模式,用组合生成器作为子生成器组合成新的组合生成器,可以递归地建立一个树状层次结构的生成器集群。

主控-从属(Master-Slave)设计模式的参考文献:“Pattern-Oriented Software Architecture, A System of Patterns”, by Buschmann, Meunier, Rohnert, Sommerlad, Stal, 1996.

组合(Composite)设计模式的参考文献:“Design Patterns: Elements of Reusable OO Software”, by Gamma, Helm, Johnson & Vlissides, 1994.

 

(C) 1992 - 2006 珠海强方体育文化用品有限公司 版权所有