問題タブ [boost-random]

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.

0 投票する
3 に答える
1496 参照

c++ - クロスプラットフォームの再現可能な番号ジェネレーター

Windows、Mac、Linux、iOS、および Android で特定のシードに対して同じ結果を生成する「乱数」ジェネレーターが必要です。今試しstd::randてみboost::random_int_generatorましboost::mt19937たが、残念ながらWindowsとMacで結果が異なります。

すべてのプラットフォームで確実に動作する (C++) 実装を知っている人はいますか?

編集1:

より具体的には、boost::mt19937Windows と Mac の数値の違いは、Windows では (2) 追加の数値ブロックが生成されていることを示しています。これらのブロックは Windows にのみ存在するため、数字の大部分は同じであるため、非常に奇妙に見えます。

編集2:

boost::mt19937すべてのプラットフォームで確実に動作します。私たちの問題はバグではありませんでした。

0 投票する
1 に答える
2461 参照

c++ - MinGW-w64 gcc の boost::random::random_device コンストラクターとデストラクタへの未定義の参照

私のOSはWindows 7 64ビットで、使用しているC++コンパイラは次のとおりです。

そして、次を使用して Boost バージョン 1.60 をインストールしました。

次に、Boost.Randomチュートリアルの例を使用して、動作するかどうかをテストしました。

最初の 2 つではすべて問題ありませんでしたが、3 つ目では、boost::random::random_device に関するリンカ エラーが発生しました。これだけを持つようにコードを最小化しました:

そして、次のエラーが表示されます。

ここで、SOで、同様の問題を抱えている人が-lboost_systemをフラグに追加したことがわかりましたが、私にとっては役に立ちませんでした。

なぜそれが機能しないのですか?確認したところ、Boost フォルダーに random_device.hpp ヘッダーがあり、random_device() と ~random_device() が宣言されています。

0 投票する
2 に答える
190 参照

c++ - ブースト乱数ジェネレーターの破棄の動作

ブースト乱数ジェネレーターをアダプター クラスでラップして、モンテカルロ ルーチンを実装しています。クラスのメンバー関数で単体テストを作成するとき、.discard(unsigned int N) の動作は N 個の乱数を格納せずに描画し、rng の状態を進めることであると想定しました。ブーストコードは次のとおりです。

これは私の仮定を支持します。ただし、 .discard(1) の結果のシーケンスは、破棄のない同じシーケンスと 1 つの違いではないことがわかりました。コード:

出力

.discard の動作についての私の解釈は間違っていますか? 2 つのシーケンスの最初の 3 つの出力が異なり、その後は同一になるのはなぜですか?

(このコードは、msvc 19.00.23918 および cygwin の g++ 4.9.2 でコンパイルされ、同じ結果が得られました)。