CユニフォームINT分布の例
STD :: unifore_int_distributionを使用して、指定された範囲内でランダム整数を生成するには、まずシード用のランダムデバイスRDを作成する必要があります。 2。Mersenne Twister Engine STD :: MT19937 GEN(RD())を初期化します。 3.分布オブジェクトstd :: unired_int_distribution
Cでstd::uniform_int_distribution
を使用して特定の範囲内でランダムな整数を生成する明確で実用的な例を示します。

基本例:範囲でランダム整数を生成します
#include <iostream> #include <random> int main(){ //ステップ1:発電機を表示するランダムデバイスを作成する std :: random_device rd; //ステップ2:乱数ジェネレーターの初期化(Mersenne Twister) std :: mt19937 gen(rd()); //ステップ3:1から10の間の均一な整数分布を定義します std :: unifore_int_distribution <int> dist(1、10); // 5つの乱数を生成して印刷します for(int i = 0; i <5; i){ int random_number = dist(gen); std :: cout << random_number << ''; } std :: cout << '\ n'; 0を返します。 }
出力(例):
7 2 9 1 5
理解する重要なポイント
?なぜrand()
ではないのですか?
std::uniform_int_distribution
を使用するstd::mt19937
のような適切なエンジンを使用して、古いrand()
よりもはるかに優れています。

- Moduloバイアス(不均一な分布)を回避します。
- 範囲を完全に制御できます。
- これは、高品質のランダム性のために設計された最新のC
<random>
ライブラリの一部です。
?どのように機能するか
std::random_device rd;
非決定的な乱数(例えば、ハードウェアから)を取得しようとします。-
std::mt19937 gen(rd());
発電機をシードします。固定された種子(gen(42)
など)を使用する場合、毎回同じシーケンスが取得されます。テストに役立ちます。
?配布オブジェクトは再利用可能です
同じまたは異なるジェネレーターで分布を再利用できます。
//同じ分布を複数回再利用します for(int i = 0; i <3; i){ std :: cout << dist(gen)<< ''; //同じdist、毎回新しい番号 }
一般的なユースケース:サイコロロールのシミュレーション
std :: unifore_int_distribution <int> dice(1、6); int roll = dice(gen); std :: cout << "あなたは" << roll << '\ n';を転がしました
これによりrand() % 6 1
とは異なり、1〜6の各数値が等しい確率を確保します。RAND_MAX RAND_MAX
応じてバイアスされる可能性があります。

まとめ
std::uniform_int_distribution
を使用するには:
-
std::random_device
で見られる優れたジェネレーター(std::mt19937
)を使用します。 - 希望のminとmax(包括的)で分布を定義します。
- 発電機で分布を呼び出して、公平なランダム整数を取得します。
基本的に、これらの3行だけが重い持ち上げを行います。
std :: mt19937 gen(std :: random_device {}()); std :: unifore_int_distribution <int> dist(1、100); int r = dist(gen);
それだけです - きれいで、速く、信頼性があります。
以上がCユニフォームINT分布の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

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

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

Stock Market GPT
AIを活用した投資調査により賢明な意思決定を実現

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

installac compilerlikegを使用して、packagemanagordedordementtoolsdependingontheos.2.writeac andsaveitwitha.cppextension.3.compiletheprogramusingg hello.cpp-ohellotogenerateanexecutable.4.runtheexecutable

カスタムアロケーターを使用して、Cコンテナのメモリ割り当て挙動を制御できます。 1.例のログインガロカーターは、オーバーロードをオーバーロードすることにより、メモリ操作を実装します。 2。アロケーターは、STLコンテナタイプの変換要件を満たすために、value_typeを定義し、テンプレートを再構築する必要があります。 3.アロケーターは、建設とコピー中にログ出力をトリガーします。これは、ライフサイクルの追跡に便利です。 4.実際のアプリケーションには、メモリプール、共有メモリ、デバッグツール、組み込みシステムが含まれます。 5。c 17以来、コンストラクトと破壊はdefaultでstd :: allocator_traitsによって処理できます

std :: system()関数を使用してシステムコマンドを実行します。システムコマンドは、ヘッダーファイルを含めてstd :: system( "ls-l")などのcスタイルの文字列コマンドに渡す必要があり、リターン値は-1です。つまり、コマンドプロセッサは使用できません。

cmakelists.txt、src/を含むプロジェクトディレクトリ構造を作成します。 2。CMAKELISTS.TXTを書き込み、CMAKEバージョン、プロジェクト名、C標準を指定し、実行可能ファイルを追加します。 3. mkdirbuildを使用してディレクトリを入力し、cmake ..およびcmake - buildを実行します。編集用; 4. add_executableを介して複数のソースファイルを追加し、ターゲット_include_directoriesを使用してヘッダーファイルパスを含めます。 5。Find_Packageを使用して外部ライブラリを見つけ、ターゲット_link_librariesにリンクします。 6。

抽象クラスは、少なくとも1つの純粋な仮想関数を含むクラスです。インスタンス化することはできず、基本クラスとして継承する必要があります。派生クラスは、そのすべての純粋な仮想関数を実装する必要があります。そうしないと、抽象クラスになります。 1。純粋な仮想関数は、仮想リターンタイプfunction name()= 0によって宣言されます。インターフェイス仕様を定義するには。 2。抽象クラスは、領域()、draw()などの統一されたインターフェイス設計によく使用され、多型呼び出しを実装します。 3。抽象クラス(仮想〜shape()= default;などなど、派生クラスオブジェクトが基本クラスのポインターを通じて正しくリリースされるようにするために、仮想デストラクタを提供する必要があります。 4。導出されたクラスが継承した後、それぞれの領域を計算するために領域()を実装する長方形や円などの純粋な仮想関数を書き直す必要があります。 5。

Cのスタックは、STLのコンテナアダプターです。バックインファーストアウトの原則に従い、ヘッダーファイルを含める必要があります。プッシュで要素を追加し、ポップが上部要素を削除し、上部がスタックの上部にアクセスします。操作の前に、それが空であるかどうかを確認します。これは、表現評価やバックトラッキングなどのシナリオでよく使用されます。

theautokeywordletsthecompilredededucevariabletypesfrominitializers、還元versを抑制し、誘惑性を促進します

答えは、必要なタイプのエイリアスと操作を含むクラスを定義することです。まず、value_type、参照、ポインター、Difference_Type、およびIterator_categoryを設定し、その後、控除、増分、および比較操作を実装します。最後に、容器内のbegin()およびend()メソッドをiteratorインスタンスを返すように提供し、stlアルゴリズムとループの範囲と互換性があります。
