第一章、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++代码
四、运行结果
生成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++代码
四、运行结果
- 第一章、2、随机产生不重数
- 随机产生不重复数字
- 产生的随机数不随机怎么办?
- 随机排序,产生不重复的数组
- c# 产生不重复随机函数
- C#一个产生随机不重复数组
- 随机不重复序列的产生
- 随机不重复队列的产生方法
- 产生不重复的随机牌
- java随机产生不重复数
- 产生不重复的随机牌
- 随机产生不重复的一组数
- 1000个数随机产生20组不重复
- 随机产生固定个数不重复的整数
- C#一个产生随机不重复数组的方法
- 不重复固定长度随机号的产生
- 对产生不重复随机数组的算法测试
- 随机产生不相同的数的编程
- 通过一个网页获取ip地址城市名称
- 应用程序无法正常启动0xc0150002 解决方案
- 外链图片也有风险吗
- autoit3 ie.au3 函数之——_FileWriteLog日志
- QT4 中文乱码
- 第一章、2、随机产生不重数
- Android SurfaceView 详解
- 【java】JETM--Java™的执行时间测量库简单学习(一)
- OPC 技术文档之 IOPCBrowseServerAddressSpace 的使用
- std::string用法总结
- 方格取数 (多进程DP)
- C/C++常用宏定义,注意事项,宏中#和##的用法
- javaScript常用的汇总
- eclipse和myeclipse快捷键