c语言入门:[23]随机数

2025-05-06 11:11:26

随机数我们在编程中还是比较常用的,比如随机生成验证码、随机彩票号码等。只是要想无任何规律地产生出一些数字,做到真正意义上的随机实在是太难了,既然是由我们程序代码产生的数那肯定是有一些规则的,所以称为伪随机。

现在我们就以一个规则来产生一系列0~9的数,请看下面的代码:

int main()

{

int a,b,i;

a=1;

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

{

a=a*214013+2531011;

b=a%10;

printf("%d ",b);

}

printf("\n");

}

你运行一下上面的代码,是不是产生了100个0~9的数,而这些数字看起来是随机的。下面对代码做下解释:

变量a的值的改变是关键,a初始值是1,每循环一次执行一次a=a*214013+2531011;执行一次a的值就会变化,当然如果a*214013+2531011的运算结果超过了整数能够表示的数的范围话,其运算结果就不准确了也有可能结果是一个负的整数,但这并不影响我们改变a的值得目的。这里我们想产生0~9之间的数那我们就用变化后的a的值跟10取余数,就是代码中的b=a%10。运行一下看到下图所示结果。

c语言入门:[23]随机数

既然回了time函数那就把我们之前的代码略做修改下吧

#include "time.h"

int main()

{

int a,b,i;

a=time(0);

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

{

a=a*214013+2531011;

b=a%10;

printf("%d ",b);

}

printf("\n");

}

怎么样,每次运行结果都不一样了吧。

当然有现成的函数来完成随机数功能,原理跟上面的代码查不多。请看下面的代码

#include <time.h>

#include<stdlib.h>

int main()

{

int b,i;

srand(time(0));

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

{

b=rand()%10;

printf("%d ",b);

}

printf("\n");

}

其中的srand(time(0)); 是初始化随机种子。

rand()负责产生一个随机整数

说白了就是srand函数负责初始化一个变量,rand函数负责用一个运算规则改变这个变量的值。

你可以认为我们之前的代码中的a就是这个变量,srand函数相当于a=time(0);的作用rand函数相当于a=a*214013+2531011;的作用,只是其中的运算规则可能跟我写的不一样罢了。

当然srand函数和rand函数共同操作了一个变量,我们管这样的变量叫全局变量下节介绍吧。

另外我留2个练习

1、产生10个100~200之间的随机数你会不会

2、随机产生一注双色球号码

感兴趣的可以把代码发在评论里

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢