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语言编写随机生成数或者字母的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)