ホームページ バックエンド開発 C++ C++の乱数関数の詳しい解説

C++の乱数関数の詳しい解説

Nov 18, 2023 pm 04:08 PM
乱数発生器 擬似乱数 乱数分布

C++の乱数関数の詳しい解説

C の乱数関数の詳細な説明

乱数はコンピューター プログラミングにおいて重要な役割を果たしており、ランダム イベントのシミュレーションや乱数シーケンスの生成などに使用できます。 . さまざまなアプリケーション。 C 言語には、開発者が乱数を生成して適用できるようにする一連の乱数関数が用意されています。この記事ではC言語の乱数関数の使い方と注意点を詳しく紹介します。

C では、乱数関数には主に、擬似乱数生成関数と補助乱数関数の 2 つの側面が含まれます。

まず、C の疑似乱数生成関数を紹介します。 C 11 で導入された乱数ライブラリ <random></random> は、より柔軟で効率的な擬似乱数生成関数を提供します。これには主に次の重要なクラスが含まれています:

  1. std::random_device: このクラスは実際の乱数シードを生成するために使用され、ハードウェア乱数ジェネレータまたはハードウェア乱数ジェネレータによって操作できます。システムが提供する乱数インターフェースを取得できます。
  2. std::seed_seq: このクラスは、乱数シード シーケンスを生成するために使用されます。複数のシード値を組み合わせてシード シーケンスを生成し、より複雑な乱数を提供できます。生成方法。
  3. std::mt19937std::mt19937_64: これら 2 つのクラスは、メルセンヌ回転アルゴリズムを使用して高品質の疑似乱数を生成する疑似乱数エンジンです。乱数、シーケンス。 std::mt19937ステータスとして 32 ビット整数を使用します。std::mt19937_64ステータスとして 64 ビット整数を使用します。
  4. std::uniform_int_distributionstd::uniform_real_distribution: これら 2 つのクラスは、一様に分散された乱数ディストリビュータです。 std::uniform_int_distribution は一様分布整数乱数の生成に使用され、std::uniform_real_distribution は一様分布実数乱数の生成に使用されます。

これらのクラスを使用して、擬似乱数を生成します。まず、std::random_device を使用して真の乱数シードを生成する必要があります。次に、擬似乱数エンジン std::mt19937 または std::mt19937_64 を介してシード初期化を使用し、ディストリビューター std::uniform_int_distribution を使用します。または std::uniform_real_distribution 乱数を生成します。

以下は、一様に分布した整数乱数を生成する方法を示すサンプル コードです:

#include <iostream>
#include <random>

int main() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(1, 100);

    for (int i = 0; i < 10; ++i) {
        std::cout << dis(gen) << " ";
    }

    return 0;
}
ログイン後にコピー

上記のコードを実行すると、1 ~ 100 の範囲の 10 個のランダムな整数が出力されます。

疑似乱数生成関数に加えて、C では乱数をより便利に処理するための補助乱数関数もいくつか提供されています。

  1. std::rand: この関数は、0 から RAND_MAX までの擬似乱数整数を生成します。デフォルトは RAND_MAX# です。 ##値は 32767 です。 rand 関数は通常、std::srand を使用して乱数シードを設定しますが、比較的低品質の乱数しか生成できないことに注意してください。
  2. std::srand: この関数は、擬似乱数生成器のシード値を設定するために使用されます。一般に、システム時刻をシード値として使用すると、プログラムによって生成される乱数シーケンスが実行のたびに異なることを確認できます。
  3. std::shuffle: この関数はシーケンスをランダムにシャッフルするために使用されます。 2 つのイテレータ パラメータを受け取り、現在の擬似乱数ジェネレータに従ってシーケンスを再配置します。
補助乱数関数は通常、C スタイルの関数 (

randsrand など) の形式で存在し、より単純で直接的なものになります。使用。ただし、これらの関数によって生成される乱数は品質が低いため、実際の開発での使用はお勧めできません。対照的に、C++11 が提供する乱数ライブラリを使用すると、より柔軟で効率的になります。

要約すると、C は、擬似乱数生成関数と補助乱数関数の両方を含む一連の乱数関数を提供します。中でも擬似乱数生成機能はより柔軟かつ効率的に利用できるため、実際の開発での利用を推奨します。乱数を生成するためのより簡単かつ直接的な方法が必要な場合は、補助乱数関数の使用を検討してください。乱数関数を使用する場合は、生成される乱数シーケンスが高品質で独立性を持つように、適切な乱数シードを設定することに注意する必要があります。

この記事の導入が、読者が C の乱数関数をよりよく理解し、応用できるようになれば幸いです。乱数関連の関数を使用する場合は、その柔軟性と効率性を最大限に活用するために、C 11 で導入された乱数ライブラリを使用することをお勧めします。

以上がC++の乱数関数の詳しい解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JavaScript で乱数と文字列を生成する JavaScript で乱数と文字列を生成する Sep 02, 2023 am 08:57 AM

乱数や英数字の文字列を生成する機能は、多くの状況で役立ちます。これを使用して、ゲーム内のさまざまな場所に敵や食べ物をスポーンできます。これを使用して、ユーザーにランダムなパスワードを提案したり、ファイルを保存するためのファイル名を作成したりすることもできます。 PHP でランダムな英数字文字列を生成する方法に関するチュートリアルを書きました。この投稿の冒頭で、真にランダムなイベントはほとんどないと述べましたが、乱数や文字列の生成にも同じことが当てはまります。このチュートリアルでは、JavaScript で擬似ランダムな英数字文字列を生成する方法を説明します。 JavaScript での乱数の生成 まずは乱数を生成してみましょう。最初に思い浮かぶメソッドは Math.random() です。これは浮動小数点を返します。

ランダムと擬似ランダムの違い ランダムと擬似ランダムの違い Oct 10, 2023 am 09:27 AM

ランダムと擬似ランダムの違いは、予測可能性、再現性、均一性、安全性です。詳細な紹介: 1. 予測可能性 乱数は予測できません 過去の結果がわかっても、将来の結果を正確に予測することはできません 疑似乱数はアルゴリズムによって生成されるため、予測できます アルゴリズムと知識さえあればシード、同じシーケンスまたはシーケンスを再生成できます; 2. 再現性、乱数は再現可能ではなく、毎回生成される結果は独立していますが、疑似乱数は再現可能です。はい、同じアルゴリズムとシードなどを使用するだけです。

Python 2.x でrandom.randint() 関数を使用してランダムな整数を生成する方法 Python 2.x でrandom.randint() 関数を使用してランダムな整数を生成する方法 Jul 31, 2023 pm 12:13 PM

Python は、データ分析、機械学習、Web 開発などの分野で広く使用されている人気のあるプログラミング言語です。 Python では、random モジュールは、ランダムな整数を生成するためのrandom.randint() 関数を提供します。この記事では、random.randint() 関数を使用してランダムな整数を生成する方法を説明し、いくつかのコード例を示します。まず、random モジュールをインポートする必要があります: importrandom 次に、rando を呼び出します。

浮き沈みの数字 浮き沈みの数字 Aug 28, 2023 pm 01:41 PM

この記事では、変動する数値とは何かを学び、変動する数値をチェックするブール関数を使用して、特定の数値が変動する数値であるかどうかを確認する方法を紹介します。問題提起 数値が与えられます。私たちのタスクは、与えられた数値が変動しているかどうかを確認することです。まず変動する数について理解しましょう; 変動する数とは、2 種類の数のみで構成され、他のすべての数は同じである数です。変動する数値は「PQPQPQ」の形式であると言えます。ここで、P と Q は、数体系における 2 つの異なる数値です。変動する数値の 1 桁目と 2 桁目は同じになることはありません。つまり、11111 は変動する数ではありません。私たちは通常、非自明な変動数値を単なる変動数値とみなします。つまり、変動数値は少なくとも 3 桁で構成される必要があります。

Python で重み付きランダム選択を実装するにはどうすればよいですか? Python で重み付きランダム選択を実装するにはどうすればよいですか? Sep 11, 2023 pm 09:45 PM

Python は、複雑なコーディング タスクを改善するための幅広い低レベル関数とライブラリを提供する、柔軟で効率的なプログラミング言語です。タスクの 1 つは、重み付けされた不規則な意思決定を実行することです。これは、すべてが選択される確率が事前に定義されている測定可能な戦略です。各項目が選択される確率が等しい単純なランダム選択とは異なり、加重ランダム選択では、各項目が選択される確率を指定できますが、その確率は異なる場合があります。この記事は、Python で重み付きランダム選択を取得する方法を包括的に理解することを目的としています。構文 重み付けされたランダムな選択を容易にする Python の主なメソッドは、random.choices() です。これはその基本的な構文です。random.choices(popula

C++の乱数関数の詳しい解説 C++の乱数関数の詳しい解説 Nov 18, 2023 pm 04:08 PM

C++ の乱数関数の詳細な説明 乱数はコンピューター プログラミングにおいて重要な役割を果たしており、ランダム イベントのシミュレーション、乱数列の生成、その他のアプリケーションに使用できます。 C++ 言語には、開発者が乱数を生成して適用できるようにする一連の乱数関数が用意されています。この記事ではC++の乱数関数の使い方と注意点を詳しく紹介します。 C++ では、乱数関数には主に、擬似乱数生成関数と補助乱数関数の 2 つの側面が含まれます。まず、C++ の擬似乱数生成関数を紹介します。 C

Pythonランダムモジュール Pythonランダムモジュール Sep 03, 2023 am 11:57 AM

プログラミングの世界では、多くの場合、ランダムな値を生成する機能が重要です。ゲーム、シミュレーション、統計モデルを開発している場合でも、単にプログラムに変動性を導入する必要がある場合でも、乱数を生成する信頼性の高い効率的な方法を持つことが重要です。ここで PythonRandom モジュールが登場します。 PythonRandom モジュールは、ランダムな値を生成するための一連の関数を提供し、Python プログラムにランダム性を簡単に導入できるようにします。特定の範囲内の乱数の生成から、リストのシャッフル、ランダム イベントのシミュレーション、さらにはランダム パスワードの生成まで、Random モジュールは幅広い機能を提供します。このブログ投稿では、PythonRandom モジュールについて詳しく説明します。乱数を生成し、実行する方法を学びます。

LightGBM実戦+ランダム探索パラメータ調整:命中率96.67% LightGBM実戦+ランダム探索パラメータ調整:命中率96.67% Jun 08, 2024 pm 10:45 PM

皆さんこんにちは、ピーターです。LightGBM は古典的な機械学習アルゴリズムであり、その背景、原理、特性は非常に研究する価値があります。 LightGBM のアルゴリズムは、効率、拡張性、高精度などの機能をもたらします。この記事では、LightGBM の特徴と原理、および LightGBM とランダム検索最適化に基づくいくつかの事例を簡単に紹介します。 LightGBM アルゴリズム 機械学習の分野では、勾配ブースティング マシン (GBM) は強力なアンサンブル学習アルゴリズムのクラスであり、弱い学習器 (通常は決定木) を徐々に追加して予測誤差を最小限に抑えることによって強力なモデルを構築します。 GBM は、事前の処理を最小限に抑えるためによく使用されます。

See all articles