Я написал эту программу, которая бросает пару кубиков 20000 раз. Правила следующие:
- Если выпадает 7 или 11, то игрок выигрывает.
- Если выпадает 2, 3 или 12, игрок проигрывает.
- Если ничего из вышеперечисленного не выпадает, сумма сохраняется, и кубик бросается снова.
Правила второго броска:
- Если выпала 7, то игрок выигрывает.
- Если выпадает та же сумма, что и раньше, то игрок проигрывает.
- Если нет, игрок снова бросает кубик, пока не будет выполнено одно из этих двух условий.
В конце он подсчитывает процент выигранных игр. Моя проблема в том, что, по словам моих коллег, процент выигранных игр должен составлять около 39% -60%, но каждый раз, когда я запускаю программу, я получаю около 20%, и я не понимаю, почему. Я делаю что-то неправильно? Может кто-то помочь мне, пожалуйста?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
int dieOne, dieTwo, keyValue, value, wins = 0, firstWins = 0, subWins = 0, loss = 0, count=0;
double percentWin, percentFirstWins, percentSubWins;
srand(time(NULL));
do{
dieOne = rand() % 6 + 1;
dieTwo = rand() % 6 + 1;
value = dieOne + dieTwo;
count++;
if (value==7||value==11) {
firstWins++;
wins++;
}
else if (value== 2||value==3||value==12) {
loss++;
}
else {
do{
keyValue = value;
dieOne = rand() % 6 + 1;
dieTwo = rand() % 6 + 1;
value = dieOne + dieTwo;
count++;
if (value==7) {
subWins++;
wins++;
}
else if (value = keyValue) {
loss++;
}
} while ( value != 7 && value != keyValue );
}
} while (count <= 20000);
percentWin = (double) wins/count * 100;
percentFirstWins = (double) firstWins/count * 100;
percentSubWins = (double) subWins/count * 100;
printf("You won %.1lf percent of your games! \nYou won %.1lf percent of games on the first roll.\nYou won %.1lf percent of games on the second roll.\n", percentWin, percentFirstWins, percentSubWins );
system("pause");
}
Есть 6 возможных способов выбросить 7 и два возможных способа выбросить 11.
Всего 8 возможных способов выиграть при первом броске.
Существует 36 (6 ^ 2) возможных способов выпадения. кости. Это означает, что у вас есть 8 из 36 шансов на победу при первом броске или примерно в 22% случаев.
Более того, у нас есть 2 возможных способа выпадения 2, 2 возможных способа выпадения 3 и 2 возможных способа выпадения 12. Таким образом, это означает, что есть шанс 1 из 6 (6/36) проиграть в первом случае. ролл, или примерно в 17% случаев.
Таким образом, оставшийся 61% выигрышей и проигрышей приходится на второй бросок. Как бы то ни было, моя программа приносит очень много неудач, в то время как программы моих коллег приносят 40-60 процентов от общего числа побед. Где я ошибаюсь?