确定性地从财富中产生输出

时间:2012-09-07 12:01:07

标签: linux bash unix

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

从这里,我要么能够:

  1. 输出第N个财富,或

  2. 设置财富使用的随机种子。

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

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

1 个答案:

答案 0 :(得分:3)

财富有很多版本和重新实现。我已经看过Linux的财富源代码,你可能正在使用的代码(这里: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”)。一点也不方便。