1

我的财富输出太随机了——为了让我的财富具有任何科学意义,我需要遵循占星术的原则,以便选择的财富部分取决于例如月相。我已经整理了占星术方面的内容,以获得一个占星确定性的数字,我可以将其用作随机种子。

从这里,我要么希望能够:

  1. 输出第 N 个财富,或

  2. 设置幸运使用的随机种子。

我可以想象做 1. 通过获取财富文件列表fortune -f并从其中一个文件中选择随机行。但如果有更优雅的解决方案,那就太好了。

我不知道该怎么做 2.,我只知道 RNG 不是 $RANDOM,所以我不能在 bash 中设置种子RANDOM=seed

4

1 回答 1

3

财富有许多版本和重新实现。我查看了 Linux 的 fortune 源代码,您可能正在使用它(这里:fortune source)。不幸的是(!)它用于/dev/urandom获取种子,如果失败time(0)则使用它。这就是为什么$RANDOM不起作用。我只能想象这些解决方案(除了您已经找到的解决方案):

1)修改源以添加强制随机种子的选项。这很微不足道。

2) 通过 将程序运行到受限环境中chroot/dev/urandom受限环境必须包含必要的二进制文件和包含您要应用的种子的假(普通文件):

echo -en "$myseed" > restrictedroot/dev/urandom
chroot restrictedroot fortune

请注意,伪造的 urandom 包含二进制数据,因此$myseed必须扩展为 4 字节的二进制序列(即具有四个十六进制序列“\xHH”)。一点都不方便。

于 2012-09-08T11:47:44.157 回答