LISP的随机函数的实现

对Autolisp来说,没有生成随机数的函数,一般来说,有如下方法可以产生它:

方法一:用同余函数实现,这是纯LISP的方法。

方法二:用系统的相关的变量如cputicks,TDUSRTIMER等实现:

此方法可能会产生一些不是很随机的数。

方法三:利用windows系统com中产生随机数。

当前实现Random类基于 Donald E.Knuth 删减随机数生成器算法的修改版本。 有关详细信息,请参阅 D.e。 Knuth。 计算机编程,卷 2 的技术:Seminumerical 算法。 Addison-wesley,Reading,MA,第三个版本,1997年。

方法四:用vbscript 或者Jscirpt等内部的随机函数产生,然后在lisp用调用脚本语言。

上面的代码经过测试验证,用同余的速度最快,vbs最慢,system.random中间,但同余法的效率并未超过system.random很多,仅仅是几倍的差距。而system.random虽也是伪随机的,但是正确性比同余法高。

Leave a comment

您的邮箱地址不会被公开。 必填项已用 * 标注