C语言如何产生一个随机数,rand函数的使用

C语言中用于产生随机数的函数是rand(), 下面我用程序详细说明一下如何在C语言下产生随机数。

示例代码如下:

 

#include 
#include 
#include 


int main(int argc, char **argv)
{
    int a;  

    a = rand()%101;

    printf("a = %d\n", a); 
    return 0;
}


运行结果为:
$ ./a.out 
a = 32
 ./a.out 
a = 32

 

 

 

发现再运行时,不管运行多少次,都不会再次产生随机数。


将代码改成:

 

#include 
#include 
#include 

int main(int argc, char **argv)
{
    int a;  
    
    srand(12);
    a = rand()%101;

    printf("a = %d\n", a); 
    return 0;
}

 

 

运行结果:
./a.out 
a = 59
./a.out 
a = 59
 

发现a的值相对上个程序改变了一次。
如果将 srand(12);
改为 srand(34);


运行结果:
./a.out 
a = 78
./a.out 
a = 78


我们发现只要srand(N);N的值改变,产生的随机数也会改变。


再将代码改为:

 

#include 
#include 
#include 

int main(int argc, char **argv)
{
    int a;  
    
    srand((unsigned int)time(NULL));
    a = rand()%101;

    printf("a = %d\n", a); 
    return 0;
}


运行结果:
./a.out 
a = 38
 ./a.out 
a = 41

 

 

 

这就产生了不一样的随机数。
time函数是随时间一直增加的。


如何确定随机数的范围?
这个是取决于 程序
a = rand()%N;
其中,N表示整数,例如上例中,N为101,
则a的取值为0~100 。
如果想取值任意数之间,例如L~M,则N的取值为M-L+1,再加上L。具体如33~44之间的整数,
则应该为a = rand()%12 + 33;
示例代码:

 

#include 
#include 
#include 

int main(int argc, char **argv)
{
    int a[10]; 
    int i;
    
    srand((unsigned int)time(NULL));
    for (i = 0; i < 10; i++)
    {   
        a[i] = rand()%12 + 33; 
        printf("a[%d] = %d\n", i, a[i]);
    }   
    return 0;
}

 

 

运行结果:
./a.out 
a[0] = 34
a[1] = 43
a[2] = 44
a[3] = 34
a[4] = 44
a[5] = 37
a[6] = 37
a[7] = 38
a[8] = 35
a[9] = 44
 

 

如果您感觉本篇博客对您有帮助,请打开支付宝,领个红包支持一下,祝您扫到99元,谢谢~~

你可能感兴趣的:(C语言)