我fortune的输出太随意了 - 为了使我的命运具有任何科学意义,我需要遵循占星术的原则,以便所选择的财富部分取决于,例如,月相。我已经整理了占星术方面的东西,以获得一个占星术确定性数字,我可以将其用作随机种子。
从这里,我要么能够:
输出第N个财富,或
设置财富使用的随机种子。
我可以想象通过获取一个幸运文件列表fortune -f
并从其中一个文件中选择一个随机行来做。但如果有一个更优雅的解决方案,那就太好了。
我不知道怎么做2.我所知道的是RNG不是$ RANDOM,所以我不能用RANDOM=seed
在bash中设置种子。
答案 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”)。一点也不方便。