程序使用rand()函数

时间:2015-04-29 09:14:23

标签: c random scanf modulo

我想创建一个简单的程序,其中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;

}

3 个答案:

答案 0 :(得分:1)

从您的scanf()

中删除\n

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

scanf("%d",&x);

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

此处不需要您的for循环。

答案 1 :(得分:1)

您的代码存在一些问题:

第1点:

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

应该是

    scanf("%d",&x);

第2点:

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

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

第3点:

为您的PRNG提供独特的种子更好。您可能希望在函数中使用srand()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. 始终初始化您的本地变量。好的做法。

答案 2 :(得分:0)

你没有提出任何问题,但我想这是&#34;为什么我的rand()函数不起作用?&#34;

您需要添加这些行

#include <time.h>

和主函数开头的随机初始化:

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说还有其他问题