C语言:rand()函数每次运行的数字都一样解决办法

目录

第一种办法: 新增头文件,改用C++运行

第二种办法:使用srand()函数,使程序每次运行时产生不同的随机数序列,序列里第一个数肯定是不同的,那计算机拿的数就不同

第三种办法:使用time()函数读取计算机的时钟值,把该值设置为随机数种子。


试了好久,下面分享三种办法。

原代码:

#include 
#include  //rand()在头文件stdlib.h定义,所以要包含
int main()
{
    int magic, flag=1,i;  
    int guess;
    magic= rand() %100 + 1;  //调用随机函数,让计算机想0-100范围内的数
    printf("%d\n",magic);   
    for (i=1;flag> 0;i++)
    {
        printf("input guess number:");  
        scanf("%d",&guess);  
        if (guess> magic)
        {
            printf("too big!\n");
            
        }
        else if (guess< magic)
        {
            printf("too small!\n");
        }
        else
        {
            printf("right!\n");
            flag= 0;  //猜对了就改掉flag的值,使它不符合循环条件
        }
    }
}
 

运行好几次,出来的变量magic都是同一个数。

第一种办法: 新增头文件,改用C++运行

#include 
#include  
#include    //新增
#include   //新增
#include  //新增
using namespace std; //新增
int main()

{
    int magic, flag=1,i;
    int guess;
    srand((unsigned)time(NULL)); //新增
    magic= rand() %100 + 1;  
    printf("%d\n",magic);   
    for (i=1;flag> 0;i++)
    {
        printf("input guess number:");  
        scanf("%d",&guess); 
        if (guess> magic)
        {
            printf("too big!\n");
            
        }
        else if (guess< magic)
        {
            printf("too small!\n");
        }
        else
        {
            printf("right!\n");
            flag= 0;  //猜对了就改掉flag的值,使它不符合循环条件
        }
    }
}

这样每次运行的magic都会不同。其中iosream头文件必须要用C++运行,还用C语言运行会报错,如下。

C语言:rand()函数每次运行的数字都一样解决办法_第1张图片

第二种办法:使用srand()函数,使程序每次运行时产生不同的随机数序列,序列里第一个数肯定是不同的,那计算机拿的数就不同

代码

#include 
#include  //rand()在头文件stdlib.h定义,所以要包含
int main()
{
    int magic, flag=1,i;  
    int guess;
    unsigned int seed; //定义一个无符号整型变量
    printf("input seed number:"); //提示输入
    scanf("%u",&seed); //输入srand()函数需要的参数
    srand(seed);       //为rand()函数设置随机数种子
    magic= rand() %100 + 1;  //调用随机函数,让计算机想0-100范围内的数
    printf("%d\n",magic);   
    for (i=1;flag> 0;i++)
    {
        printf("input guess number:");  
        scanf("%d",&guess);  
        if (guess> magic)
        {
            printf("too big!\n");
            
        }
        else if (guess< magic)
        {
            printf("too small!\n");
        }
        else
        {
            printf("right!\n");
            printf("一共猜了%d次",i);
            flag= 0;  //猜对了就改掉flag的值,使它不符合循环条件
            
        }
    }
}
 

第三种办法:使用time()函数读取计算机的时钟值,把该值设置为随机数种子。

代码

#include 
#include  
#include    //添加头文件
int main()
{
    int magic, flag=1,i;  
    int guess;
    srand(time(NULL)); //使用time()函数读取计算机的时钟值

    magic= rand() %100 + 1;  //调用随机函数,让计算机想0-100范围内的数
    printf("%d\n",magic);   
    for (i=1;flag> 0;i++)
    {
        printf("input guess number:");  
        scanf("%d",&guess);  
        if (guess> magic)
        {
            printf("too big!\n");
            
        }
        else if (guess< magic)
        {
            printf("too small!\n");
        }
        else
        {
            printf("right!\n");
            printf("一共猜了%d次",i);
            flag= 0;  //猜对了就改掉flag的值,使它不符合循环条件
            
        }
    }
}
 

你可能感兴趣的:(C语言,c语言,算法,开发语言)