24、探索 Expect:随机数、库、版本及时间处理
2026/5/6 12:28:03 网站建设 项目流程

探索 Expect:随机数、库、版本及时间处理

1. 随机数生成

在 Expect 中,有时需要生成随机数,例如在玩像 robohunt 这样的游戏脚本时。不过,Expect 没有内置的随机数生成命令。这背后有其哲学考量,一是已有众多随机数生成的解决方案,二是没有一种随机数生成器(RNG)能满足所有人的需求。不同的 RNG 会在不同目标间进行权衡,因此选择哪种随机数生成器取决于具体的使用场景,这也是 UNIX 系统上有众多 RNG 的原因之一。

如果已有独立的 RNG 程序,可以使用openspawn来运行它。若 RNG 是非交互式的且能生成随机数流,可使用open打开并通过gets读取新的随机数;若 RNG 是交互式的,则按需发送命令并使用expect获取结果。

若所需的 RNG 是用 C 子例程编写的,可以编写一个命令来调用它,然后将其链接到 Expect 中。

对于对随机数质量要求不高,只是希望程序每次运行方式不同的情况,可以使用以下 Tcl 过程:

proc random_init {seed} { global _ran set _ran $seed } proc random {} { global _ran set period 259200 set _ran [expr ($_ran*7141 + 54773) % $period] expr $_ra

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询