はい、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 件のコメント:
コメントを投稿