Documentation index

無作為性(Randomness)

無作為なデータは再現性を損ねてしまう場合があるため、必ず避けなければなりません。

無作為な入力が必要なら、疑似乱数生成器 の種(seed)に同じ値を使うようにするといいでしょう。 ファイルから読み取るようにもできるし、変更履歴(changelog)やバージョン管理システムから読み取るようにもできます。

リンク時最適化機能を有効にした GCC は、バイナリオブジェクトに無作為な識別子を書き込みます。 明示的に --frandom-seed を指定する場合もあります。 データを無作為にごちゃ混ぜにしてしまうので、ファイル名を渡すようにするほうがいいでしょう。

コンパイルツールチェインの中には一時的な中間ファイルを作成するものもあります。 最終的なビルド結果にパス名が含まれてしまう場合、再現性を損ねてしまう場合があります。 一般的な解決方法はないのですが、ソースコード自体を修正するほうがよいでしょう。 例えば、Ocaml のように アセンブラで .file ディレクティブを使用する方法があります。


Documentation index

Follow us on Twitter @ReproBuilds, Mastodon @reproducible_builds@fosstodon.org & Reddit and please consider making a donation. • Content licensed under CC BY-SA 4.0, style licensed under MIT. Templates and styles based on the Tor Styleguide. Logos and trademarks belong to their respective owners. • Patches welcome via our Git repository (instructions) or via our mailing list. • Full contact info