c语言单片机随机数,C语言随机数

在C语言函数库中包含了一个产生随机数的函数: int rand( void );

函数返回的是一个界于0~32767之间的伪随机数,包括0和32767。注意,这里产生的是伪随机数,不是真正意义上的随机数,看下面的程序:

#include "stdlib.h"

#include "stdio.h"

void main(  )

{

/* 输出一个伪随机数 */

printf( " %d\n", rand() ); }

运行结果: 346

多次运行这个程序,发现每次产生的结果都是346(不同的机器可能产生的结果不一样),这就是所谓的伪随机数。那么,如何才能产生真正意义上的随机数呢?这就有一个随机种子的问题。在C语言标准函数库中,有这么一个函数:多次运行这个程序,发现每次产生的结果都是346(不同的机器可能产生的结果不一样),这就是所谓的伪随机数。那么,如何才能产生真正意义上的随机数呢?这就有一个随机种子的问题。在C语言标准函数库中,有这么一个函数:多次运行这个程序,发现每次产生的结果都是346(不同的机器可能产生的结果不一样),这就是所谓的伪随机数。那么,如何才能产生真正意义上的随机数呢?这就有一个随机种子的问题。在C语言标准函数库中,有这么一个函数:

void srand( unsigned int seed );

参数中的seed就是用来产生一个随机数系列的种子,缺省值是1。所以,要产生真正意义上的随机数,就要求每次提供的种子不一样,一般情况下,都设置时间为随机函数的种子。看下面的一段程序:

#include "stdlib.h"

#include "stdio.h"

#include "time.h"

void main(   )

{

int i;

/*将当前时间设置成随机函数的种子,所以每次产生的数都不一样*/

srand( (unsigned)time( NULL ) );    //注: 单片机系统中,可用系统时钟滴答或者定时器产生一个不断累加的数来代替time

/ * 输出10个随机数*/

for( i = 0; i < 10;i++ )

printf( “ %d\n”, rand() );

}

运行结果: 6929 8026 21987 30734 20587 6699 22034

25051 7988 10104 每次运行这个程序,产生的随机数都不一样,这样就达到要求了。若要输出1~10之间的随机数,可将最后一个printf中的rand()改为rand()%10+1

25051 7988 10104

每次运行这个程序,产生的随机数都不一样,这样就达到要求了。若要输出1~10之间的随机数,可将最后一个printf中的rand()改为rand()%10+1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值