実現したいこと
□プログラム概要
・10回のループの中で、内角、外角、真ん中をランダムに発生させて
それぞれ出たコースの数を出力
・1が出たら真ん中
・2が出たら外角
・3が出たら内角
発生している問題・分からないこと
プログラムは正常に動くが、実行結果が以下内容で何度やっても同様の出力結果になる
検索したところrand()関数は疑似乱数を発生させるため同様の結果になっているのか?
といった仮説までは立てれたが、実際にランダムに結果を出力させる実行方法が分からないです。
【実行結果】
1球目
真ん中:0,外角:0,内角:0
2球目
真ん中:0,外角:0,内角:1
3球目
真ん中:0,外角:0,内角:2
4球目
真ん中:0,外角:1,内角:2
5球目
真ん中:0,外角:2,内角:2
6球目
真ん中:0,外角:2,内角:3
7球目
真ん中:0,外角:3,内角:3
8球目
真ん中:1,外角:3,内角:3
9球目
真ん中:2,外角:3,内角:3
10球目
真ん中:2,外角:4,内角:3
10球中真ん中:2球、外角:4球、内角:4球
該当のソースコード
#include<iostream> #include<stdlib.h> using namespace std; int main(int argc, char** argv) { int out=0, in=0, center=0;//投げたコースを格納 int zone;//コースを格納 int count;//ループ用変数 for (count = 0; count < 10; count++) {//10球投げるまで繰り返す zone = 0; cout << count + 1 << "球目" <<endl<<"真ん中:" << center << ",外角:" << out << ",内角:" << in << endl; zone=rand() % 3 + 1;//コースを乱数から格納する if(zone==1){//zoneが1なら真ん中でカウント center = center + 1; } else if (zone == 2) {//zoneが2なら外角でカウント out = out+1; } else {//zoneが3なら内角でカウント in = in + 1; } } //結果を表示 cout <<count <<"球中" << "真ん中:" << center << "球、外角:" << out << "球、内角:" << in << "球" << endl; }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
わからないことや発生している問題を教えてください
上記に実行結果を記載
補足
特になし
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/08/31 08:00
2024/08/31 08:22
2024/08/31 12:30