1

みなさん、良い一日を!AVR Asm (atmega128) で数値をランダム化しようとしています。したがって、最初に値を初期化する必要があり、asm x86 開発者の場合、「rdtsc」命令を使用することに注意してください。AVR アーキテクチャで rdtsc のようなランダムな init 値を初期化することは可能ですか? 異なる初期値を使用することは可能ですか? ありがとうございます。

4

2 に答える 2

0

おそらく、CPU クロックで動作しているタイマーを使用できます (それが TSC であるため)。とはいえ、これは疑似乱数ジェネレーターのシードにのみ十分であり、生成された乱数は暗号化操作には適していません。

于 2013-10-01T07:38:27.660 に答える
0

なるほど、わかりますが、もう一度強調すると、タイマー/カウンターの値を乱数ジェネレーターとして使用することはできません。これは、疑似乱数アルゴリズムのシード番号のソースとしてのみ使用できます。

それを行うには、高速かつ継続的にカウントするタイマー/カウンターと、実際にランダムイベントジェネレーターとして機能する人間が必要です。

人間の介入なしでは、タイマーまたはカウンターを使用して乱数シードを取得することはできません。

コンピューターでは、人間がプログラム開始の瞬間をランダム化します。

カウンターは実際にはそれほど重要ではありません。唯一の要件は、人間の反応時間よりもはるかに速く実行することです。許容できる周波数は数キロヘルツです。このようにして、たとえば、可能な限り高速な周波数に構成されたタイマーの一部を使用したり、メイン プログラム ループごとにインクリメントされる単純なソフトウェア カウンターを使用したりできます (もちろん、プログラムが十分に高速な場合)。

お使いのデバイスがリアルタイム クロックをサポートしている場合は、それを使用してください。これにより、デバイス全体がオフになっていても RTC が実行されるため、ランダム化が向上します。

このようにして、人間が提供するスイッチをオンにすると、ランダムな瞬間イベントが提供されます。

いずれの場合も、疑似乱数を生成するために使用するアルゴリズムは、シード生成アプローチよりもはるかに重要です。

だから、make はできるだけ単純で愚かで、疑似乱数発生器に集中します。

于 2013-10-01T09:26:46.140 に答える