在我的作业中,用户选择1到20之间的数字,但有可能%50计算机可能错误地解析。例如选择的数字:15用户猜测:10计算机可能会说(猜测更低的数字),有50%的机会。我试图通过使用另一个随机创造机会,但它选择一个常数,所以程序总是说猜测更高或更低。我错误地思考?请帮我解决这个问题。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL));
int randomNum = (rand() % 20) + 1;
int c = (rand() % 20) + 1;
int i = 1;
int userGuess = 0;
printf("Guess a number between 1 to 20 \n"); //start with guess
scanf(" %d", &userGuess);
while (randomNum != userGuess) {
if (userGuess > randomNum && c % 2 == 0) {
printf("Guess lower number \n");
scanf(" %d", &userGuess);
} else
if (userGuess > randomNum && c % 2 != 0) {
printf("Guess higher number \n");
scanf("%d", &userGuess);
} else
if (userGuess < randomNum && c % 2 == 0) {
printf("Guess higher number \n");
scanf(" %d", &userGuess);
} else
if (userGuess < randomNum && c % 2 != 0) {
printf("Guess lower \n");
scanf("%d", &userGuess);
}
i++;
return 0;
}
答案 0 :(得分:1)
您需要为每个循环获得50%条件的新随机数c
。
将int c= (rand()%20)+1;
之类的行移动到循环中,以便每次都获得一个新数字。
但你不需要在c上执行%20或+1。您在if()语句中执行%2。不要加1,因为你已经把它比作0或者!= 0.所以类似:
while (randomNum!=userGuess)
{
int c = rand();
if(userGuess>randomNum && c%2 == 0)
...