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函数的使用方法是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)