私は2つのダイスをロールし、ベクトルの合計を追跡するこのコードを作成しようとしています。私は次のコードを思いついたが、12を超える数字を入力すると範囲エラーが出てくる。誰かが私に間違っていることを教えてもらえますか?2つのダイスをローリングしてベクトルで合計を保存する
#include "std_lib_facilities.h"
void simulate(vector<int>&, size_t);
void size_int(const vector<int>, size_t);
void print_vector(const vector<int>&, size_t);
int main()
{
size_t n;
cout << "Enter the amount of rolls: ";
cin >> n;
vector<int> v(12);
for(int i=0;i<v.size();i++)
{
v[i] = 0;
}
simulate(v, n);
print_vector(v, n);
}
void simulate(vector<int>& sum, size_t n)
{
int dice_1, dice_2;
cout << "Rolling the dice " << n << " times produces:\n";
srand(time(NULL));
size_t i;
for (i = 0; i < n; ++i){
dice_1 = 1+(rand() % 6);
dice_2 = 1+(rand() % 6);
sum[dice_1+dice_2]++;
}
}
void print_vector(const vector<int>& v, size_t n)
{
size_t i;
double x = 1.0*n;
cout << "Roll\tFrequency\tProbablity\n";
for(i = 1;i<v.size();++i)
{
cout << i+1 << "\t" << v[i] << "\t\t" << v[i]/x << endl;
}
}
からあなたは12に、ベクトルの大きさをハードコード: 'ベクトル V(12);' –
は、あなたが入力した番号のベクトルのサイズを変更し、それがスタック上に12 –
質問に制限されています。オーバーフローには、[最小、完全、および検証可能な例]が必要です(http://stackoverflow.com/help/mcve)。ここのコードは最小限ではありません。 – MrEricSir