そこで、ユーザーが数字 (1 から 12 の間) を入力できるようにする次のプログラムを正常に作成し、何回試行した後に、2 つのサイコロが最初に入力した数字を正常にロールしたかをユーザーに通知します。そのため、人が 7 を入力すると、2 つのダイスの合計が 5 の場合、最初にランダム ロールが実行され、表示されます...「スロー 1 の結果: 3 + 2」..など
でもなぜかやってみると、7が出てくるまでに1000ターン以上かかってしまい、プログラムを終了してしまいます。サイコロのオッズは 1/1000 ではなく約 1/12 であるべきなので、何か間違ったコーディングをしていることがわかります。誰かが何が間違っているのかを理解するのを手伝ってくれるなら、それは素晴らしいことです.
これまでの私のコードは次のとおりです...
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
int sought;
int roll1 = 7;
int roll2 = 7;
int minAmount = 0;
int maxAmount = 6;
int counter = 0;
printf("Dice Thrower\n");
printf("==============\n");
printf("Total Sought : ");
scanf("%d", &sought);
while (sought > 12){
printf("Bad Input! Try Again!\n");
printf("Total Sought : ");
scanf("%d", &sought);
}
while (sought != roll1 + roll2){
counter++;
srand(time(NULL));
roll1 = minAmount + rand() % (maxAmount + 1 - minAmount);
roll2 = minAmount + rand() % (maxAmount + 1 - minAmount);
printf("Result of Throw %d : %d + %d\n", counter, roll1, roll2);
}
printf("You got your total in %d throws!\n", counter);
}