タグ

ブックマーク / qiita.com/MergeCells (1)

  • C言語でコンパイル時刻をプログラム内変数の初期値として代入する/コンパイル時刻をランダムシードに使う - Qiita

    はじめに スタンドアロンのマイコン環境を想定 タイトルにC言語と書いてますが想定はマイコンボード、特にArduinoです。 マイコンで乱数を使用する処理を含む場合、疑似乱数の生成方法の影響により同じプログラムを複数のマイコンに書き込んでも同じ値を生成してしまい、結果的に乱数として望ましい動作をしないという課題があります。 未接続のADコンバータをシード値にするなどの方法もありますが、今回はパソコンでコンパイルした時刻をプログラム内に取り入れる方法を紹介し、それをシード値として使用しすることでコンパイルごとに乱数値がばらつくようにします。 なお、コンパイル時刻が異なるプログラム同士では異なる乱数値を生成しますが、秒単位で同時刻にコンパイルしたり、書き込み済みのマイコンをリセットした場合は同じ値を生成します。 また、コンパイル後のファイルを複数のマイコンに書き込む場合もコンパイル時刻に依存する

    C言語でコンパイル時刻をプログラム内変数の初期値として代入する/コンパイル時刻をランダムシードに使う - Qiita
  • 1