首页 > 心得笔记 > C/C++中随机数生成的几个函数

C/C++中随机数生成的几个函数

2011年4月19日  5,006 views 发表评论 阅读评论

随机数生成

要产生一个随机数,必须得指定一个随机数种子。指定随机数种子可以通过以下两个函数来实现—–randomize()srand().

randomize():它的功能是初始化随机数发生器。在c++ builder中函数声明如下:
extern PACKAGE void __fastcall Randomize(void)
其英文描述如下:
Randomize initializes the built-in random number generator with a random value (obtained from the system clock). The random number generator should be initialized by making a call to Randomize, or by assigning a value to RandSeed.
可以看出,randomize()函数是用系统的时间作为随机数种子,初始化随机数发生器的。

在C++中不能使用randomizerandomrandom函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。 可改用C++下的rand函数来实现。

srand():它的功能也是初始化随机数发生器。在c++ builder中函数声明如下:
void srand(unsigned seed)
其英文描述:
Initializes random number generator.
The random number generator is reinitialized by calling srand with an argument value of 1. It can be set to a new starting point by calling srand with a given seed number.
可以看出:srand()是通过参数seed来指定随机数种子的。

指定了随机数种子,我们就可以调用函数 rand() random()来产生随机数了。调用它可以返回一个随机数。

rand()函数其定义如下
int rand():调用它将返回一个0–32767之间的一个int 型数值。

random()函数其定义如下:
int random(int num):调用它可以返回一个 0—(num-1)之间的一个int 型数值。

若想返回一个从[a,b)之间的数,可以通过一个通用的公式:
(rand()%(b-a))+a  返回的数值包含a,包含b。若 a=0,就可以返回一个 0–b之间的数值。

在实际的应用中,要注意的是:若初始化随机数种子一样,则它产生的随机数是一样的。反之,若每次想产生不同的随机数,则必须使每次的随机数种子不一样才行。

 



声明:未作说明,则本文为代码至上原创。转载务必注明出处
注意:转载须保留全文,如需修改请 联系作者
本文永久地址:http://codeup.org/archives/89


我要分享到:

新浪微博 腾讯微博 人人 Twitter Facebook 网易微博 鲜果 Follow5
分类: 心得笔记 标签: