ホームページ > バックエンド開発 > C++ > C で均一に分散されたランダム整数を効率的に生成するにはどうすればよいですか?

C で均一に分散されたランダム整数を効率的に生成するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-03 14:21:42
オリジナル
398 人が閲覧しました

How Can I Efficiently Generate Uniformly Distributed Random Integers in C  ?

均一に分散されたランダムな整数を効率的に生成する

プログラミングの分野では、乱数の生成はさまざまなアプリケーションで重要な役割を果たします。これらのタスクの中で、一様に分散されたランダムな整数を作成することは一般的な要件です。既存のアプローチの限界を調査し、速度、均一性、可変範囲、およびシード可能性の特定の要件を満たす最適化されたソリューションを提示しましょう。

単純なアプローチの限界

rand() 関数を利用する単純なアプローチでは、最大境界値が除外されるため、真の均一性を提供できません。これに対処するために、2 番目の式が提案されましたが、実験により不均一な分布が明らかになりました。

最適な解決策: C 標準ライブラリの活用

幸いなことに、C 標準ライブラリは、不偏の乱数を生成するための包括的なソリューションを提供します。ヘッダ。このヘッダーは、メルセンヌ ツイスターなどの高度な乱数エンジンと、一貫性のある均一な結果を保証する配布クラスを提供します。

次の C コード スニペットは実装を示しています。

#include <random>

std::random_device rd;     // Random device for seed initialization
std::mt19937 rng(rd());    // Random-number engine using Mersenne-Twister
std::uniform_int_distribution<int> uni(min,max); // Distribution class for uniform integers

auto random_integer = uni(rng);
ログイン後にコピー

これこのアプローチには大きな利点があります:

  • 速度: C 標準ライブラリは、次のように設計されています。パフォーマンスを向上させ、最適化されたソリューションを提供します。
  • 均一性: std::uniform_int_distribution クラスは、指定された範囲内で偏りのない結果を保証します。
  • 変数範囲:このソリューションは、任意の最小値と最大値をサポートします。
  • シーダビリティ: std::random_device により、再現性のためにランダム エンジンのシードが可能になります。

C 標準ライブラリを活用することで、簡単に均一に分散されたランダムな整数を効率的かつ確実に生成し、複雑な数式や計算方法の再発明の必要性を排除します。ホイール。

以上がC で均一に分散されたランダム整数を効率的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート