java中的Random()注意!
显示传入一个long 类型的种子。同时他提供了很多方法来生成伪随机数。即如果类的两个实例时用同一个种子创建的,
对他们以同样的顺序调用方法,则他们会产生相同的数字序列。
下面做个试验验证一下,当两个Random对象的Seed相同时,他们会产生相同的数字序列,需要注意的是,当使用默认的种子
构造Random对象时,那么他们的seed就相同,属于同一个seed。
import java.util.Random;
class SeedTest
{
public static void sop(Object obj)
{System.out.println(obj);
}
public static void main(String[] args)
{Random r1 = new Random(50);sop("第一个seed为50的随机数对象:");sop("r1.nextBoolean():\t" + r1.nextBoolean());sop("r1.nextInt():\t\t" + r1.nextInt());sop("r1.nextDouble():\t" + r1.nextDouble());sop("r1.nextGaussian():\t" + r1.nextGaussian());sop("-------------------------------------------");Random r2 = new Random(50);sop("第二个seed为50的随机数对象:");sop("r2.nextBoolean():\t" + r2.nextBoolean());sop("r2.nextInt():\t\t" + r2.nextInt());sop("r2.nextDouble():\t" + r2.nextDouble());sop("r2.nextGaussian():\t" + r2.nextGaussian());sop("-------------------------------------------");Random r3 = new Random(100);sop("第三个seed为100的随机数对象:");sop("r3.nextBoolean():\t" + r3.nextBoolean());sop("r3.nextInt():\t\t" + r3.nextInt());sop("r3.nextDouble():\t" + r3.nextDouble());sop("r3.nextGaussian():\t" + r3.nextGaussian());sop("--------------over-------------------------");
}
}
运行结果:
第一个seed为50的随机数对象:
r1.nextBoolean(): true
r1.nextInt(): -1727040520
r1.nextDouble(): 0.6141579720626675
r1.nextGaussian(): 2.377650302287946
第二个seed为50的随机数对象:
r2.nextBoolean(): true
r2.nextInt(): -1727040520
r2.nextDouble(): 0.6141579720626675
r2.nextGaussian(): 2.377650302287946
第三个seed为100的随机数对象:
r3.nextBoolean(): true
r3.nextInt(): -1139614796
r3.nextDouble(): 0.19497605734770518
r3.nextGaussian(): 0.6762208162903859
从上面运行结果来看,如果两个Random对象的种子相同,而且方法的调用顺序也相同,则他们会产生相同的
数字序列,这也说明,Random 产生的数字并不是真正随机的,而是一种伪随机。
所以为了避免两个Random对象产生相同的数字序列,开发时通常推荐使用当前时间来作为Random对象的种子
即:
转载于:https://www.cnblogs.com/yangzhi/archive/2012/10/16/3576628.html
java中的Random()注意!相关推荐
- JAVA中的Random详解
JAVA中的Random详解 首先,在JDK自带的常用的random中有两个,这俩都是产生随机数的,不过一个是util下的random,另外一个是Math下的.我们分别介绍一下 util中的rando ...
- Java中的Random()函数 【转载】
今天在做Java练习的时候注意到了Java里面的一个随机函数--Random,刚开始只是知道这个函数具有随机取值的作用,于是上网搜索了资料一番,做了一下一些关于Random函数的总结: Java中 ...
- JAVA中的Random()
Java中存在着两种Random函数: 一.java.lang.Math.Random; 二.java.util.Random 第一种: 调用这个Math.Random()函数能够返回带正号的doub ...
- java中随机数Random和ThreadLocalRandom()用法与区别
package com.test;import java.util.Random; import java.util.concurrent.ThreadLocalRandom;public class ...
- java中countinue,.random(用于产生一个随机数)入门可看
1.countinue:用在循环中,基于条件控制,跳过其次循环体内容的执行,继续下一次的执行 break:用在循环中,基于条件控制,终止循环体内容的执行,也就是结束当前的整个循环 eg:public ...
- java random构造方法_Java中的Random()函数及两种构造方法
Java中存在着两种Random函数: java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是 ...
- Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom 文中的 Random即:java.util.Random, ThreadLocalRandom 即 ...
- Random类(Java中的随机类)
http://hi.baidu.com/jfeng_chan/item/3e4914b781a2db9e1846977b 在实际的项目开发过程中,经常需要产生一些随机数值,例如网站登录中的校验数字等, ...
- java中random的头文件_JAVA中的Random()函數
Java中存在着兩種Random函數: 一.java.lang.Math.Random; 調用這個Math.Random()函數能夠返回帶正號的double值,該值大於等於0.0且小於1.0,即取值范 ...
最新文章
- MATLAB编写ode文件,MATLABODE45问题M文件为br/functiondq 爱问知识人
- WCF部署:让IIS有权限访问证书文件
- 解决Echarts窗口自适应失效问题
- 判断 小程序_社区团购小程序商城系统,可以从哪些方面判断?
- 在SSH整合过程中:org/hibernate/engine/spi/SharedSessionContractImplementor
- 吴恩达《机器学习》课程总结(16)推荐系统
- 阴差阳错2019-12-13
- 题目:16版.雇员的工作职责(一)
- zend_soap做webservice的使用方法
- java中的特殊字符集合
- 使用zabbix监控esxi
- 整数区间内整数的因子的个数
- 1.Chrome开发者工具不完全指南(一、基础功能篇)
- 油猴(Tampermonkey)安装教程
- 产品的国内版和国际版背后的思考
- java——15位身份证号码升级到18位
- 机器学习的13种算法和4种学习方法,推荐给大家
- 超详细的元器件分类大全—电阻、电容、电感
- 下属执行不给力?真相是90%的领导不会布置任务!
- 《数据最重要的成员--算法》