問題タブ [uniform-distribution]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::uniform_real_distribution 同じ乱数を再生成する
以下のコードを実行すると、 の前半は後半とarr
等しくなります。なんで?など、さまざまなシードも試しstd::chrono::system_clock::now().time_since_epoch().count()
ました。ありがとう。
c++ - Oracle Databaseのurand
Oracle Database 12c を使用しています。C++ (urand()) のように均一に分散された浮動小数点数を生成する方法はありますか?
またはそうすることができる任意のサブルーチン。DBMS_RANDOM パッケージには正規分布の機能がありますが、一様分布ではありません
c++ - 一様実分布すべての可能な値の生成
私は現在、重要度のサンプリングに取り組んでおり、テスト目的uniform_real_distribution<float>
で、間隔 [0,1] で生成される可能性のあるすべての値を生成できる必要があります (はい、右からも閉じています)。私のアイデアは、浮動小数点数に変換できる整数を生成することでした。私が行ったテストから、[0,1] の一様な単精度浮動小数点数と [0,2^24] の整数の間に完全な全単射があるようです ([0,1] ではないという事実に少し悩まされています,2^24-1] そして、私はまだ理由を理解しようとしています.0は浮動小数点数にとって単に特別であり、1から2^24はすべて同じ指数を持つ浮動小数点数になるというのが私の最善の推測です)。私の質問は、この方法で生成された float が から生成できる float であるかどうかuniform_real_distribution<float>
です。私の整数 <-> フロート テストは以下のとおりです。
編集:
やや関連:
http://xoroshiro.di.unimi.it/random_real.c
https://lemire.me/blog/2017/02/28/how-many-floating-point-numbers-are-in-the-interval-01/
編集2:
私は最終的に、デフォルトのテンプレート引数を使用uniform_real_distribution<float>
した場合に少なくともmt19937
エンジンで使用した場合に何が行われるかを理解することができました (VS2017 に付属する実装について話している)。悲しいことに、[0,2^32-1] でランダムな整数を生成し、それを float にキャストしてから 2^32 で割ります。言うまでもなく、これにより不均一に分散された浮動小数点数が生成されます。ただし、生成された数値間のデルタの精度に近い精度で作業していない限り、これはほとんどの実用的な目的で機能すると推測しています。