随机数学习整理
来源:互联网 发布:数据库查找重复数据 编辑:程序博客网 时间:2024/05/21 22:32
rand()函数:
- rand()的内部实现用的是线性同余法,它不是真的随机数,因其周期特别长,故在一定的范围内可以看成是随机的。
- 这种伪随机数是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。(注意:小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了。)
- 目前,计算机中用来产生随机数的算法基本上都是“线性同余”法。rand()返回一随机数值的范围在0至RAND_MAX之间,其中RAND_MAX的范围是32767到2147483647之间(int型)。
- 0~RAND_MAX每个数字被选中的机率是相同的。
- 用户未设定随机数种子时,系统默认的随机数种子为
- rand()产生的是伪随机数,它每次执行时基于的为随机数序列是相同的,若要让这个伪随机数列不同的话,就需要用随机数发生函数srand()初始化它,即对随机数种子进行“播种”。
使用随机数生成二人组rand()和srand()来生成随机数
首先调用一次srand函数初始化随机数种子。代码如下:srand((unsigned)time(NULL));然后调用rand函数生成随机数。
1.产生一个范围内的随机数:
要取得[a,b)的随机数
a + (int)(b-a)*rand()/(RAND_MAX + 1);
要取得[a,b]的随机数
a + (int)(b-a)*rand()/(RAND_MAX);
要取得[0,1]之间的浮点数
rand()/double(RAND_MAX);
2.筛选型随机数
如希望取得0~99的随机数,但不能是6或是5的倍数
int x = (int)(100 * rand()/(RAND_MAX + 1.0));while((x == 6) || (x % 5 == 0)){ x = (int)(100 * rand()/(RAND_MAX + 1.0));}
3.从一组乱数中取随机数
可以用数组将这些数存储,然后生成一个0~size-1范围内的随机数,以其对数组做下标运算即可实现随机取数。
0 0
- 随机数学习整理
- C# 随机数整理
- 随机数产生问题整理
- python随机数整理
- C++产生随机数(整理)
- 随机数生成整理(C++,Go)
- 随机数rand学习
- python学习之随机数
- javascript学习之随机数
- C++11 随机数学习
- Linux命令学习:随机数
- 学习Python3(随机数)
- C++primer学习:随机数.
- 随机数 学习笔记
- Matlab学习 之 随机数
- qt学习--产生随机数
- 关于随机数的学习
- 【JAVA学习笔记】随机数
- linux常用命令总结
- windows下进行python-django常见问题
- 垃圾收集简史
- matlab调试卷积深度置信网络CDBN-master的时候出现crbm_forward2D_batch_mex没法识别(解决)
- Java之fastjson学习
- 随机数学习整理
- git 创建项目和使用
- JSP —— XML 与dom4j 基础使用
- HDOJ 2023 求平均成绩
- 使用HttpURLConnection上传文件,进度条显示不正确
- 代码执行过程
- python爬虫常见问题
- Js复制剪切-兼容所有浏览器
- Android 6.0以上 需要运行时申请的权限(二)