[解決済み] C++11のランダムライブラリを使って乱数を生成する
2022-03-05 03:52:35
質問
タイトルが示すように、私は新しいC++11を使って乱数を生成する方法を見つけようとしています。
<random>
ライブラリです。このコードで試してみました。
std::default_random_engine generator;
std::uniform_real_distribution<double> uniform_distance(1, 10.001);
私の持っているコードの問題は、コンパイルして実行するたびに、いつも同じ数字が生成されることです。そこで質問なのですが、ランダムライブラリの他のどのような関数が、本当にランダムでありながらこれを実現できるのでしょうか?
私の特別な使用例として、私は範囲内の値を取得しようとしていました。
[1, 10]
どのように解決するのですか?
MicrosoftのStephan T. Lavavej(stl)がGoing Nativeで、新しいC++11のランダム関数の使い方と、なぜ使ってはいけないかについての講演を行いました。
rand()
. その中で、彼はあなたの疑問を基本的に解決するスライドを紹介しています。以下に、そのスライドにあったコードをコピーしておきます。
講演の全文を見ることができます。 こちら :
#include <random>
#include <iostream>
int main() {
std::random_device rd;
std::mt19937 mt(rd());
std::uniform_real_distribution<double> dist(1.0, 10.0);
for (int i=0; i<16; ++i)
std::cout << dist(mt) << "\n";
}
私たちは
random_device
という乱数生成器の種を蒔くために一度
mt
.
random_device()
よりも遅いです。
mt19937
しかし、OSからランダムなデータを要求するため、シードは必要ありません(ソースは、例えば
RdRand
など)。
を見てみると
この質問/回答
のように見えます。
uniform_real_distribution
の範囲の数値を返します。
[a, b)
が必要です。
[a, b]
. そのために、私たちの
uniform_real_distibution
は、実際には次のようになるはずです。
std::uniform_real_distribution<double> dist(1, std::nextafter(10, DBL_MAX));
関連
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み] JavaScriptでランダムな文字列/文字を生成する
-
[解決済み] JavaScriptで特定の範囲のランダムな整数を生成する?
-
[解決済み] 乱数(int)を生成する方法を教えてください。
-
[解決済み] JavaScriptで2つの数値の間の乱数を生成する
-
[解決済み] 英数字のランダムな文字列を生成する方法
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] 0から9までのランダムな整数を生成する
-
[解決済み] ランダムな英数字の文字列を生成するにはどうすればよいですか?
-
[解決済み】大文字と数字を含むランダムな文字列の生成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む
-
[解決済み] C++のusingキーワードはどのような理屈なのでしょうか?
-
[解決済み】C++でランダムな英数字の文字列を作成するにはどうすればいいですか?