Windows で drand48 に相当するものを探しています。知らないすべての人にとって、以下は同等ではありません。
(double)rand()/RAND_MAX;
まず、Rand は RAND_MAX を含む値を返します。次に、Windows では RAND_MAX=32767 です。これは私のアプリケーションには短すぎる期間です。
私の目的は、シミュレーション用のノイズを生成することです。drand48 と同じ周期の疑似乱数発生器を使用することが望ましいです。
まず、解決策と期間を混同しているように見えることに注意してください。Windowsでは、randは0から32767までの値を返しますが、これは同じ値が32768呼び出しごとに繰り返されることを意味するものではありません。したがって、16ビットを超える解像度が必要でない限り、randは完全に適切なはずです。(解像度と期間はdrand48で同じですが、すべての疑似乱数ジェネレーターで同じではありません。)
drand48の正確な動作が必要ない場合は、rand_sが最も簡単なオプションです。32ビットの解像度で、drand48未満ですが、ほとんどの目的には十分です。暗号的に安全な乱数を生成するため、固定期間はありません。考えられる問題の1つは、drand48よりもはるかに遅くなることです。
drand48と同じ動作が必要な場合は、アルゴリズムが文書化されており、簡単に再実装できるはずです。または、FreeBSDのソースコードを使用することもできます( http://fxr.watson.org/のソースコードブラウザへのリンク)。
あなたの質問に対する正確な答えではないかもしれませんが、それでも解決策です。CryptGenRandomを使用します(WinAPI の形式です)。