C当中的取随机数函数rand()的具体用法是什么

C当中的取随机数函数rand()的具体用法是什么,第1张

c语言之rand函数的使用

在编程时我们有时总希望自己产生一个随机数字,以供使用,那么下面介绍rand函数的使用。

方法/步骤

写入头文件

#include <stdlibh> #include <stdioh> #include <timeh>

变量的定义

void main( void ) {  int i,k;

srand( (unsigned)time( NULL ) );  /选取种子文件/

for( i = 0; i <20;i++ )   /循环控制20个随机数的生成/ {   k=rand()%100;         /储存随机数/  printf( " k=%d\n", k ); /输出随机数/  }   }

END注意事项

此为随机函数的一种产生方法

如果只需一个,那么可以省略循环控制

rand()函数是产生随机数的一个随机函数。

注意:

(1)使用该函数首先应在开头包含头文件stdlibh

#include<stdlibh>(C++建议使用#include<cstdlib>,下同)

(2)在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlibh 中定义的一个整数,它与系统有关。

(3)rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:

printf("Random numbers are: %i %i\n",rand(),rand());

(4)因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机,有时候也叫伪随机数。

(5)为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过为随机数生成器提供一粒新的随机种子。函数 srand()(来自stdlibh)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器。

实例:

#include <stdioh>

#include <stdlibh>

int main()

{

unsigned int seed; /申明初始化器的种子,注意是unsigned int 型的/

int k;

printf("Enter a positive integer seed value: \n");

scanf("%u",&seed);

srand(seed);

printf("Random Numbers are:\n");

for(k = 1; k <= 10; k++)

{

printf("%i",rand());

printf("\n");

}

return 0;

}

当我们需要产生一些随机数,如单位的抽奖,购买体育**前的选号等,我们可以利用Excel中的RAND函数来产生这些随机数。RAND函数能

够返回大于等于0小于1的均匀分布随机数,每次计算工作表时都将返回一个新的数值。我们只要将RAND()与INT函数组合起来,就能够产生各种位数的随

机数了。

“=INT(RAND()10)”

产生0到10之间的任意自然数

“=INT(RAND()100)”

产生0到100之间的任意自然数

……

由此,我们只需要在7(或其他大小)个单元格中分别输入“=INT(RAND()10)”,这样就能够产生一个7位的随机数。

设取值区间为[a,b],则要在此区间选取一个随机数,程序为:

a=rand()(b-a)+a

若要求随机数是整数,则程序为:

a=ceil(rand()(b-a))+a

这样即可!

举例:

rand(2,6)

ans =

08147 01270 06324 02785 09575 01576

09058 09134 00975 05469 09649 09706

产生0-1随机数。

>> randn(2,6)

ans =

04889 07269 02939 08884 -10689 -29443

10347 -03034 -07873 -11471 -08095 14384

产生均值为0,方差 σ^2 = 1,标准差σ = 1的正态分布的随机数

使用rand的流程可以总结为:

1 调用srand(time(NULL))设置随机数种子。

2 调用rand函数获取一个或一系列随机数。

需要注意的是,srand只需要在所有rand调用前,被调用一次即可,没必要调用多次。

为了使rand的结果更“真”一些,也就是令其返回值更具有随机性(不确定性),C语言在stdlibh中还提供了srand函数,通过该函数可以设置一个随机数种子,一般用当前时间的毫秒数来做参数。通过time(NULL)可以获取到当前时间的毫秒值(该函数位于timeh)中。

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

问题描述:

C语言中产生随机数的函数是什么(好象有两个)以及这两个函数的头文件是什么

解析:

#include <stdioh>

#include <stdlibh>

#include <timeh>

void main()

{

int i;

srand((unsigned)time(NULL));

i = rand() % 100;

}

这样产生的随机数就是0-99之间的,

这二个函数的工作过程如下:

1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;

2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)

3) 根据需要多次调用rand(),从而不间断地得到新的随机数;

4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。

随机函数rand公式是:"=a+rand()%(b-a+1)”。

rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数。

但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了 srand()函数,它的原形是void srand( int a) 功能是初始化随机产生器既rand()函数的初始值,即使把种子的值改成a。

rand()函数使用延伸:

若要生成 a 与 b 之间的随机实数,应使用: RAND()(b-a)+a

如果要使用函数 RAND 生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=RAND()”,保持编辑状态,然后按 F9,将公式永久性地改为随机数。

如图 要在单元格得到0--9之间的 随机数。

在单元格输入公式:=randbetween(0,9),按F9,可刷新。

在一个区域内得到0--9之间的随机数,如图

同样按F9刷新。

以上就是关于C当中的取随机数函数rand()的具体用法是什么全部的内容,包括:C当中的取随机数函数rand()的具体用法是什么、如何用random函数产生随机数、excel随机数rand函数的使用方法是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9689860.html

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

发表评论

登录后才能评论

评论列表(0条)

保存