Linux 决定性地从财富中产生产出

Linux 决定性地从财富中产生产出,linux,bash,unix,Linux,Bash,Unix,我的结果太随机了——为了使我的命运不具有任何科学意义,我需要遵循占星术的原则,以便选择的命运部分取决于,例如,月亮的相位。我已经整理了占星学方面的东西,得到了一个占星学上确定的数字,我可以用它作为一个随机种子 从这里开始,我希望能够: 输出第n个财富,或 设定命运使用的随机种子 我可以想象做1。通过获取财富文件列表fortune-f,并从其中一个文件中随机选取一行。但如果有一个更优雅的解决方案就好了 我不知道怎么做2.,我只知道RNG不是$RANDOM,所以我不能用RANDOM=seed在bas

我的结果太随机了——为了使我的命运不具有任何科学意义,我需要遵循占星术的原则,以便选择的命运部分取决于,例如,月亮的相位。我已经整理了占星学方面的东西,得到了一个占星学上确定的数字,我可以用它作为一个随机种子

从这里开始,我希望能够:

  • 输出第n个财富,或

  • 设定命运使用的随机种子

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


    我不知道怎么做2.,我只知道RNG不是$RANDOM,所以我不能用
    RANDOM=seed

    在bash中设置种子fortune有很多版本和重新实现。我已经看过Linux的《财富》源代码,您可能正在使用的源代码(这里:)。不幸的是(!)它使用
    /dev/uradom
    获取种子,如果失败,则使用
    时间(0)
    。这就是为什么
    $RANDOM
    不起作用的原因。我只能想象这些解决方案(除了您已经找到的解决方案之外):

    1) 修改源以添加强制随机种子的选项。这很琐碎

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

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

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

    我认为可以通过在bash中执行random=seed来设置随机种子。我在他们的示例中找到了对它的引用,他们在脚本中通过执行RANDOM=$$来使用pid。我已经尝试过这样做(类似于
    RANDOM=5;fortune
    ),如果我使用同一种子运行两次,我不会得到同样的命运。