0
私は64ビットマシン上のlong doubleの乱数生成のためにboostを使用しようとしています。私はlong doubleの(擬似)乱数ジェネレータのためのブーストの使用
rng = boost::mt19937();
を使用し、いくつかの時点で
はしかし、コンパイラは、ブースト/ランダム/ mersenne_twister.hppのライン88、
x[i] = (1812433253UL * (x[i-1]^(x[i-1] >> (w-2))) + i) & mask;
に短縮暗黙の変換があることを主張している64ビットを32ビットの値に変換します...
私は長いダブルまたはダブルをしたいと指定していませんでした...なぜ彼はそれについて主張していますか?私は64ビットOSを使用しているからですか?
この問題を解決する簡単な方法はありますか?私は... xDで
おかげ
これはうまくいきませんでした:ここで不平を言ってください:random/detail/large_arithmetic.hpp(boostバージョン1.49.0)の行99-100 –
Strange。私は小さなテストを作成しました。 VC10で警告やエラーメッセージがコンパイルされることはありません。ここにソースコードへの[リンク](http://ideone.com/XwHaL)があります。コメントにコードを投稿することは不可能です。限界の外です。これはVC10で問題なくコンパイルされます。オンラインコンパイラは 'mt19937_64'クラスがないためにエラーが発生します。コンパイルできないサンプルコードを投稿できますか? – megabyte1024
警告が表示されますが、とにかく動作します... xDありがとうございます。 –