2015-10-19 2 views
-2

Этот заголовочный файл создает вектор размера в зависимости от количества кубиков. Требуется количество рулонов (rollsN), количество кубиков (numDice) и количество сторон на кости (numSides --- fixed to 6). Я думаю, проблема в первом цикле. Он будет работать по назначению, если он установлен на одну кубик, но заканчивается с ошибкой вне диапазона при применении двух кубиков.генератор случайных чисел для одной или двух кубиков

void randomNum(const int rollsN, int numDice, int numSides) 
{ 
//Vector will hold an extra value (starts at 0, not 1). 
vector<int> numVect((numDice*numSides) + 1); 

//Starts a randomizer based on time 
srand(time(0)); 

//provides random values for every possible result of the die 
for(int i = 0; i < rollsN; i++) 
{ 
    int temp = 0; //holds the side of the dice that is chosen... or the sum of the two dice that are rolled 
    for(int j = 0; j < numDice; j++) 
    { 
     temp += (rand() % (numDice*numSides) + 1); 
    } 

    numVect.at(temp) += 1; 
} 

//prints how many times the die landed on that value 
cout << endl << "RANDOMIZED RESULTS " << endl; 
for(int i = 1; i <= (numDice*numSides); i++) 
{ 
    cout << i << " ----- " << numVect[i] << endl; 
} 

cout << "~~~~~~~~~~~~~~~~~~~~~~~" << endl << "Histogram" << endl; 

}

+1

Не думаете ли вы 'numVect' должны быть рассчитаны на количество кубиков раз количество рулонов? Я не вижу, какое количество сторон имеет к этому отношение .... –

+1

'srand (time (0));' должен выполняться * один раз и только один раз * обычно при запуске программы. – paxdiablo

ответ

1

Этот код

for(int j = 0; j < numDice; j++) 
{ 
    temp += (rand() % (numDice*numSides) + 1); 
} 

Каждое случайное число идет от 1 до numDice*numSides. Вы добавляете это numDice раз, что приводит к потенциальному наибольшему количеству numDice*numDice*numSides, который находится за пределами вашего диапазона.

Изменить это:

for(int j = 0; j < numDice; j++) 
{ 
    temp += rand() % numSides + 1; 
} 
+0

Спасибо, спасибо. Это была глупая ошибка –

 Смежные вопросы

  • Нет связанных вопросов^_^