用%50的机会猜错了数字

时间:2015-12-12 17:02:56

标签: c

在我的作业中,用户选择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;
    }

1 个答案:

答案 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)

...