標準rand()
とsrand(time(NULL))
メソッドを使用しない方法で、0から1までのC++で一様乱数を生成したい。この理由は、私が同じ時計内で2回以上アプリケーションを実行すると、シードはまったく同じになり、同じ出力を生成することになります。TR1を使用してC++で乱数を生成する/ dev/random(弾力性<1秒未満)
私は、ブーストやOS /コンパイラの仕様に頼っていません。 x86が想定されます。
これを行う別の方法はTR1(私はC++ 11はありません)と何らかの方法で/dev/random
をシードすることです。
今、私はこれを持っているが、それはまだ1秒の実行中にうまく動作しませんシードとしてtime(NULL)
を使用しています:
#include <iostream>
#include <tr1/random>
int main()
{
std::tr1::mt19937 eng;
eng.seed(time(NULL));
std::tr1::uniform_int<int> unif(1, RAND_MAX);
int u = unif(eng);
std::cout << (float)u/RAND_MAX << std::endl;
}
OS /コンパイラ固有の機能を使用しますか? – Mysticial
私はこれを避けたいです...私はこれをさまざまなシステムに展開します – gnychis
どのように様々ですか?それらはまだすべてx86ですか? – Mysticial