みなさん、良い一日を!AVR Asm (atmega128) で数値をランダム化しようとしています。したがって、最初に値を初期化する必要があり、asm x86 開発者の場合、「rdtsc」命令を使用することに注意してください。AVR アーキテクチャで rdtsc のようなランダムな init 値を初期化することは可能ですか? 異なる初期値を使用することは可能ですか? ありがとうございます。
2 に答える
おそらく、CPU クロックで動作しているタイマーを使用できます (それが TSC であるため)。とはいえ、これは疑似乱数ジェネレーターのシードにのみ十分であり、生成された乱数は暗号化操作には適していません。
なるほど、わかりますが、もう一度強調すると、タイマー/カウンターの値を乱数ジェネレーターとして使用することはできません。これは、疑似乱数アルゴリズムのシード番号のソースとしてのみ使用できます。
それを行うには、高速かつ継続的にカウントするタイマー/カウンターと、実際にランダムイベントジェネレーターとして機能する人間が必要です。
人間の介入なしでは、タイマーまたはカウンターを使用して乱数シードを取得することはできません。
コンピューターでは、人間がプログラム開始の瞬間をランダム化します。
カウンターは実際にはそれほど重要ではありません。唯一の要件は、人間の反応時間よりもはるかに速く実行することです。許容できる周波数は数キロヘルツです。このようにして、たとえば、可能な限り高速な周波数に構成されたタイマーの一部を使用したり、メイン プログラム ループごとにインクリメントされる単純なソフトウェア カウンターを使用したりできます (もちろん、プログラムが十分に高速な場合)。
お使いのデバイスがリアルタイム クロックをサポートしている場合は、それを使用してください。これにより、デバイス全体がオフになっていても RTC が実行されるため、ランダム化が向上します。
このようにして、人間が提供するスイッチをオンにすると、ランダムな瞬間イベントが提供されます。
いずれの場合も、疑似乱数を生成するために使用するアルゴリズムは、シード生成アプローチよりもはるかに重要です。
だから、make はできるだけ単純で愚かで、疑似乱数発生器に集中します。