1

ファイルを含めることができない組み込みCで乱数生成関数をコーディングしようとしていmath.hます。srandそのため、シード関数を使用できません。

時間以外にシードする方法はありますか?

4

4 に答える 4

3
  1. srandにありますが、stdlib.hではありませんmath.h。時間とともにシードするには、ではなく、time.hを使用することを含めます。それがどのように関連しているかわかりません。time(NULL)math.h
  2. randとが利用できない場合は、 LCGメルセンヌツイスターsrandなど、独自に作成できます。
  3. 速度とセキュリティが問題にならない場合は、現在のPRNG状態を永続メモリに保存し、乱数が必要になった時点から再開できます。たとえば、MT19937の期間は2 19937-1であり、再シードしない場合は通常の目的には十分です。
  4. シードが本当に必要な場合は、どのスケールでも一定でないものをシードとして使用できます。
于 2010-03-07T06:29:53.230 に答える
3

メルセンヌツイスターの使用を検討してください。ソースはここにあります。たとえば、従来の線形合同法よりもはるかに高品質で、非常に長い期間で、多くの最近の学術文献で深く研究され、祝福されています。

于 2010-03-07T06:30:24.673 に答える
0

この講義を通してルックシーを持っていることを検討してください、あなたにいくつかのアイデア(そしてコード)を与えるかもしれません。PDFにはいくつかの異なるオプションがあり、コードも少し含まれています。

于 2010-03-07T06:34:56.100 に答える
0

ファイルを含めることができない組み込みCで乱数生成関数をコーディングしようとしていmath.hます。srandそのため、シード関数を使用できません。

srand()通常、を使用してシードされます。これは、ではなく、でtime()定義されます。<time.h><math.h>

時間以外にシードする方法はありますか?

もちろん、好きなものをシードすることができます。何が利用できるかは、プラットフォームによって異なります。

于 2010-03-07T06:47:25.330 に答える