为什么我这里用rand()得到的随机数是固定的41

为什么我这里用rand()得到的随机数是固定的41


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

int main(void)
{
    int n = rand()%100;
    int a,max,count;
    scanf("%d %d",&a,&max);
    if(a == n){
        printf("Bingo!\n");
    }
    else{
            for(count = 1;count < max;count++){
                if(a == n && count >= 1 && count <= 2){
                    printf("Lucky You!\n");
                    break;
                }
                else if(a == n && count > 2){
                    printf("Good Guess!\n");
                    break;
                }
                else if(a > n){
                    printf("Too big\n");
                }
                else{
                    printf("Too small\n");
                }
                scanf("%d",&a);
                if(a < 0){
                    printf("Game Over");
                    break;
                }
            }
            if(count == max){
                    printf("Game Over\n");
                }  
    }
    return 0;
} 
程序main第一行开头加上
srand(time(0));

另外加上
#include <time.h>

其实这个好像每个人电脑上都是41。

【以下回答由 GPT 生成】

问题是由于没有设置随机数种子导致的。rand()函数是根据当前的随机数种子生成随机数的,如果没有设置种子,每次运行程序时,种子的默认值是相同的,因此生成的随机数也是固定的。

为了解决这个问题,可以使用srand()函数设置随机数种子。srand()函数需要一个参数,一般可以使用time(NULL)作为参数,它返回当前时间的秒数,保证每次运行程序时种子是不同的。修改程序如下所示:

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

int main(void)
{
    srand(time(NULL)); // 设置随机数种子

    int n = rand() % 100;
    int a, max;
    scanf("%d %d", &a, &max);

    // 程序的其他部分不变...

    return 0;
}

这样修改之后,每次运行程序时生成的随机数就会是不同的了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^