第一章、2、随机产生不重数

来源:互联网 发布:数据库系统原理怎么学 编辑:程序博客网 时间:2024/04/30 20:04
一、问题描述
生成M个(假设为10)位于1~N(假设为100)之间的整数,且互不重复。
二、问题分析
1、C++提供产生随机数的函数rand()。其产生随机数需用种子,默认为1。若种子相同,则rand()产生的随机数相同,所以需要使用srand()函数产生种子。一般使用系统时间作为参数,供srand()产生种子。
2、使用rand()生成位于(x,y)之间的随机数,有两种方法:
方法一:rand()%(y-x)+x;
方法二:(int)((double)rand()/(double)RAND_MAX*(y-x))+x ;
其中方法二能使获得x~y之间数值的概率更均匀,但由于是浮点运算,复杂性更高;而方法一运算更快捷,但会使前RAND_MAX%(y-x)个数的概率略大。并且考虑到直接调用rand()的场合,对精度要求不是太高,所以通常使用第一种方法。
三、C++代码

四、运行结果
原创粉丝点击