1

私の運命からの出力はランダムすぎます-私の運命が何らかの科学的意義を持つためには、選択される運命が月の満ち欠けなどに部分的に依存するように、占星術の原則に従う必要があります。占星術の側面を整理して、占星術的に決定論的な数値を取得しました。これは、ランダムシードとして使用できます。

ここから、私は次のことができるようになりたいと思います。

  1. N番目の幸運を出力する、または

  2. フォーチュンが使用するランダムシードを設定します。

fortune -fフォーチュンファイルのリストを取得し、それらのファイルの1つからランダムな行を選択することで、1。を実行することを想像できます。しかし、もっとエレガントな解決策があればいいのにと思います。

2.の方法がわかりません。私が知っているのは、RNGが$ RANDOMではないことだけなので、シードをbashに設定することはできませんRANDOM=seed

4

1 に答える 1

3

幸運の多くのバージョンと再実装があります。Linuxのフォーチュンソースコード、おそらくあなたが使用しているもの(ここではフォーチュンソース)を見てきました。残念ながら(!)/dev/urandomシードを取得するために使用され、これが失敗した場合time(0)は代わりに使用されます。$RANDOMそれが機能しない理由です。私はこれらの解決策だけを想像することができます(あなたがすでに見つけたものに加えて):

1)ソースを変更して、ランダムシードを強制するオプションを追加します。それは非常に些細なことです。

2)を介して制限された環境でプログラムを実行しますchroot。制限された環境には、必要なバイナリと、/dev/urandom適用するシードを含む偽のファイル(プレーンファイル)が含まれている必要があります。

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

偽のurandomにはバイナリデータが含まれているため$myseed、4バイトのバイナリシーケンス(つまり、4つのexadecimalシーケンス "\ xHH")として展開する必要があることに注意してください。まったく便利ではありません。

于 2012-09-08T11:47:44.157 に答える