C ++でこれらの乱数を使用して、しばらくの間髪を引き裂いています。
Pythonでは、私は素晴らしいものを持っていました:
random.uniform(0, 1)
呼び出すたびに新しい乱数を生成しました。
C++には、このようなものが必要です。私は長い間グーグルで検索erand48()
し、レイトレーサーに実装する予定の を見つけました(PythonからC ++に翻訳しています)。
簡単なテスト ケースを試してみましたが、random_uniform()
常に新しい乱数を吐き出す関数を作成したいと考えていました (これは非常に高速に実行されるため、AFAICT を使用してもtime()
機能しません) 。
unsigned short Xi[3] = {0, 1, 27};
std::cout << erand48(Xi);
そして、出力は次のとおりです(プログラムを呼び出すたびに出力されます):
0.174529
次のように、前の出力を new として使用してみましたXi
( Xi
s 初期値が定義されました):
float random_uniform() {
long generated = erand48(Xi);
int temp = generated * 1000000;
unsigned short Xi[3] = {temp - 16, temp - 7, temp - 18};
return generated;
}
しかし、それは十分な乱数を生成するようには見えません(そして、吐き出すだけです.I 0
'、理由はわかりません...)。
毎回新しい乱数を吐き出す関数を作成する方法はありますか?