单片机C语言如何产生随机数

单片机C语言如何产生随机数,第1张

1、C语言提供了一些库函数来实现随机数的产生。C语言中有三个通用的随机数发生器,分别为 rand函数, random函数, randomize 函数

2、但是rand函数产生的并不是真意正义上的随机数,是一个伪随机数,是根据一个数,称之为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。

3、在调用rand函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。一般用for语句来设置种子的个数。

你的意思是 从数组里 随机 取出数。对吗?

假定 double 型数组 a[], 有 N 个 元素。现在随机取 n 个数出来。

窍门是 用 rand() % N 得 随机下标,有了下标就有了数。

程序例子如下:

#include <stdioh>

#include <timeh>

main(){

double a[8]={11,12,-15,-69,3,0,16,888}; //已知数组

int N=8,n=10,i,j; //N可以大于n, 也可以小于,也可以等于

srand((unsigned)time(NULL)); //随机种子

for (i=0;i<n;i++){

j = rand() % N; // 随机下标计算

printf("%g\n",a[j]); //输出随机数

};

return 0;

}

生成随机数

用函数rand就可以

引用头文件stdlibh

调用rand()就生成一个随机数。

要生成字母

可以用

rand()%26+'A'

改成a就是小写字母。

C语言产生有范围随机数需要random函数。

random即随机数发生器,使用之前需要使用Randomize语句进行随机数种子的初始化。RANDOM产生的是伪随机数或者说是用一种复杂的方法计算得到的序列值,因此每次运算时需要一个不同的种子值。种子值不同,得到的序列值也不同。因此也就是真正的随机数了。这也正是RANDOMIZE随机初始化的作用。

VB里用

NEW

RANDOM()来表示初始化。

能:

随机数发生器

法:

int

random(int

num);

程序例:

#include

<stdlibh>

#include

<stdioh>

#include

<timeh>

/

prints

a

random

number

in

the

range

0

to

99

/

int

main(void)

{

randomize();

随机数种子被初始化时

printf("Random

number

in

the

0-99

range:

%d\n",

random

(100));

return

0;

}

两位数:也就是10~99了

这里可以用生成随机数取余的方法得到,

比如任何整数除以100取余,那得到的是0~99的数,

那怎么得到10~99呢?

任何整数除以90取余,那得到的是0~89的数,再加上10,也就是得到10~99的数了

#include <stdlibh>

#include <stdioh>

#include <timeh>

void main( void )

{

int i,k;

srand( (unsigned)time( NULL ) );

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

{

k=rand()%90+10; //这就OK了

printf( " k=%d\n", k );

}

}

以上就是关于单片机C语言如何产生随机数全部的内容,包括:单片机C语言如何产生随机数、C语言中在已知数组中产生几个随机数的程序怎么做跪求大神指教、如何用C语言编写随机生成数或者字母的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9722715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存