はい、C++で20から100の間のランダムな整数を生成し、*文字を使って横方向にグラフ表示するプログラムを作成します。
C++
#include <iostream>
#include <random>
#include <vector>
int main() {
// 乱数生成器の初期化
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dist(20, 100);
// ランダムな整数を格納するベクター
std::vector<int> randomNumbers;
// 10個のランダムな整数を生成
for (int i = 0; i < 10; ++i) {
randomNumbers.push_back(dist(gen));
}
// グラフ表示
for (int number : randomNumbers) {
std::cout << number << ": ";
for (int i = 0; i < number; ++i) {
std::cout << "*";
}
std::cout << std::endl;
}
return 0;
}
解説:
-
ヘッダーファイルのインクルード:
iostream: 入出力ストリームrandom: 乱数生成vector: 動的配列
-
乱数生成器の初期化:
std::random_device rd;: 乱数生成のシードを取得std::mt19937 gen(rd());: メルセンヌ・ツイスター法による乱数生成器std::uniform_int_distribution<> dist(20, 100);: 20から100の範囲の一様分布
-
ランダムな整数の生成と格納:
std::vector<int> randomNumbers;: 整数を格納するベクターfor (int i = 0; i < 10; ++i): 10個の乱数を生成randomNumbers.push_back(dist(gen));: 乱数をベクターに追加
-
グラフ表示:
for (int number : randomNumbers): ベクターの要素を順に処理std::cout << number << ": ";: 数値を表示for (int i = 0; i < number; ++i): 数値の数だけ*を表示std::cout << std::endl;: 改行
実行結果の例:
55: *******************************************************
82: **********************************************************************************
33: *********************************
91: *********************************************************************************************************
24: ************************
67: ********************************************************************
42: ******************************************
78: ******************************************************************************
29: *****************************
51: ****************************************************
ポイント:
std::random_deviceでシードを取得し、std::mt19937で乱数生成器を初期化することで、より予測不可能な乱数を生成できます。std::uniform_int_distributionで乱数の範囲を指定することで、意図した範囲の乱数を生成できます。std::vectorを使うことで、生成した乱数を柔軟に管理できます。
このプログラムを参考に、乱数の数や範囲、グラフの表示形式などを自由にカスタマイズしてみてください。
0 件のコメント:
コメントを投稿