【随机数】深入理解random和srandom
2019独角兽企业重金招聘Python工程师标准>>>
###运行程序看效果
#include <iostream>using namespace std;
/* 测试随机数,种子是随机的,得出的随机数是固定的 */
void testRandom(){ srandom(1); printf("RAND_MAX=%d\n",RAND_MAX); for(int i=0;i<10;i++){ printf("i=%d random value=%ld \n",i+1,random()); }
} /* 测试随机数,种子是随机的,得出的随机数是不固定的 */
void testRandom2(){ srandom(time(NULL)); printf("RAND_MAX=%d\n",RAND_MAX); for(int i=0;i<10;i++){ printf("i=%d random value=%ld \n",i+1,random()); }
} int main(int argc, char *argv[]) {testRandom();testRandom2();
}
执行程序两次 看效果
###解析 总结
1、生产随机数需要种子(Seed),且如果种子固定,random()每次运行生成的随机数(其实是伪随机数)也是固定的;因为返回的随机数是根据稳定的算法得出的稳定结果序列,并且Seed就是这个算法开始计算的第一个值。
2、srandom()可以设定种子,比如srandom(0) 、srandom(1)等等。如果srandom设定了一个固定的种子,那么random得出的随机数就是固定的;如果程序运行时通过srandom(time(NULL))设定种子为随机的,那么random()每次生成的随机数就是非固定的了。
###运用
//需要使用随机值的时候 一定要记住设置srandom的种子srandom((unsigned int)time(NULL));- (void)viewDidLoad {[super viewDidLoad];//使随机值固定srandom((unsigned int)time(NULL));self.devices = [@[] mutableCopy];
}
```###关于随机性```
假如你想产生 1 ------10 之间的一个随机数, 你应该像下面这样编码j = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0)));而不是下面这样的代码j = 1 + (rand() % 10);结论:
如果你使用 srandom 种植种子, 则你应该使用 random 返回随机数,
如果你使用 srand 种植种子, 则你应该使用rand返回随机数。不过srand和rand官方已经不推荐使用。原因是产生随机数的性能不是很好,
另外是随机数的随机性没有random好,再者就是不是线程安全。
```
转载于:https://my.oschina.net/kshopping/blog/706261
【随机数】深入理解random和srandom相关推荐
- Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom 文中的 Random即:java.util.Random, ThreadLocalRandom 即 ...
- 获取随机数的方式Random类对象的方法 java 0913
获取随机数的方式Random类对象的方法 java 0913 Random类 实例化这个类得到一个对象 利用对象的方法获取整数 代码 import java.util.Random;public cl ...
- java 生成随机数(利用Random生成任意范围的随机数)
目录 一.为什么需要这种方法? 二.方法思路 1.头尾相减 2.尾巴+1 3.最终的结果加上初始的首个数字 代码 运行结果 一.为什么需要这种方法? Random函数只能限制生成随机数的区间的末尾是多 ...
- python生成固定长度随机数_python日记——random模块
random random模块用于生成伪随机数. 真正意义上的随机数(或者随机事件)是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的.而计算机中的随机数是所谓的随机函数按照一定算法模拟产生 ...
- python随机产生10个随机数_python(random模块)取10以内的随机数
原博文 2018-01-21 15:56 − 上面有个selenium-webdriver循环点击百度搜索结果以及获取新页面的handler文章,随机获取百度搜索结果中不同id的结果,实现代码如下: ...
- C++11中随机数生成器(random)
目录 1 随机数生成器的分类 2 随机数据引擎 2.1 线性同余法引擎 2.2 梅森旋转法引擎 2.3 滞后Fibonacci引擎 2.4 非确定随机生成器 2.5 默认随机数引擎 3 随机数适配器 ...
- python中uniform randint_Python 随机数函数(random,uniform,randint,randrange,shuffle,sample)...
random.random random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0 描述 random() 方法返回随机生成的一个实数,它在[0,1)范围 ...
- js随机数的理解以及应用
1.如果要生成以0开始的一个随机数 公式:Math.random() var a=Math.random() console.log(a)//得到的是0-1的随机小数 2.如果要生成以0开始的一个随机 ...
- c语言怎么产生随机数函数,详细介绍一下C语言里面的随机数产生函数random怎么用...
匿名用户 1级 2013-11-24 回答 rand()函数可以用来产生随机数e799bee5baa6e79fa5e98193e4b893e5b19e31333332643334,但是这不是真真意义上 ...
- python生成泊松分布随机数_Python Numpy random.poisson() 泊松分布
1.泊松分布 泊松分布是离散分布. 它估计一个事件在指定时间内可能发生的次数.如果一个人一天吃两次饭,他吃三次饭的可能性有多大? 它有两个参数: lam-发生率或已知次数,例如 上述问题2. size ...
最新文章
- 开启报名 | 青源 Salon 第 1 期:强化学习专场,报告,海报,激辩,这是年轻人的会场
- java自学难点_java学习重难点
- js按位运算符及其妙用
- 数论初步——同余与模算术
- python打开360浏览器_python selenium使用360浏览器出现新皮肤设置怎么办?
- ubuntu中安装jdk
- t580 thinkpad_聊聊ThinkPad T580:除了大屏,还有什么
- 用 cctld工具创建带有国家代码的IP地址表
- css :after和:before
- 基于pytorch实现图像分类——理解自动求导、计算图、静态图、动态图、pytorch入门
- [Java] 蓝桥杯ALGO-63 算法训练 乘法表
- Java事件的垃圾回收机制和跳出多重循环
- ASP.NET OAuth:解决refresh token无法刷新access token的问题
- zhaow游戏知识问答
- 【第2篇】人工智能(AI)语音测试原理和实践
- 使用APICloud AVM多端框架开发app通讯录功能
- C语言实现反汇编【微机原理】
- Jquery 实现 qq迷你首页 切换效果
- oracle dbms_lob trim,Oracle - DBMS_LOB函数和用法
- 【Day4.1】打的士去卧佛寺