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

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

示例代码如下:

 

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


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 <stdio.h>
#include <string.h>
#include <stdlib.h>

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 <stdio.h>
#include <string.h>
#include <stdlib.h>

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 <stdio.h>
#include <string.h>
#include <stdlib.h>

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元,谢谢~~

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值