使用rand()函数的程序

program using the rand () function

我想编写一个简单的程序,其中 rand() 函数从 1,2,3 中生成一个随机数,并要求用户预测该数字。如果用户正确预测了数字,那么他就赢了,否则他就输了。 这是程序-

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int game;
    int i;
    int x;

    printf("enter the expected value(0,1,2)");
    scanf("%d\n",&x);
    for(i=0;i<1;i++){
        game=(rand()%2) + 1

        if(x==game){
            printf("you win!");
        }

        else{
            printf("you loose!");
        }
    } return 0;

}

从您的 scanf()

中删除 \n

scanf("%d\n",&x);

scanf("%d",&x);

并在 game=(rand()%2) + 1; 后放置一个分号 (;) 它有效。

此处不需要您的 for 循环。

您的代码存在一些问题:

第 1 点:

    scanf("%d\n",&x);

应该是

    scanf("%d",&x);

第 2 点:

for(i=0;i<1;i++)

这个for循环实际上没用。它只迭代一个。要么使用更长的计数器,要么摆脱循环。

第 3 点:

最好为您的 PRNG 提供一个独特的种子。您可能希望在您的函数中使用 srand() and time(NULL) 来提供该种子。

第 4 点:

game=(rand()%2) + 1

应该是

game = rand() % 3; // the ; maybe a typo in your case
                ^
                |
          %3 generates either of (0,1,2)

第 5 点:

当您将 %rand() 一起使用时,请注意 modulo bias issue


注:

  1. main()的推荐签名是int main(void)
  2. 总是初始化你的局部变量。好习惯。

你没有问任何问题,但我猜是 "Why my rand() function doesn't work?"

您需要添加这些行

#include <time.h>

以及main函数开头的随机初始化:

srand(time(NULL));

哪个应该给出:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    srand(time(NULL));
    int game;
    int i;
    int x;

    printf("enter the expected value(0,1,2)");
    scanf("%d",&x);
    for(i=0;i<1;i++){
        game=(rand()%2) + 1;

        if(x==game){
            printf("you win!");
        }

        else{
            printf("you loose!");
        }
    } return 0;

}

编辑:还有 Sourav 所说的其他问题