一,问题描述

需要生成一个[0,1]的随机数。即随机生成 0 或者 1。使用java.util.Random类的 nextInt(int)方法,当构造Random类的对象并提供随机数种子时,发现了一个奇怪的问题:

当使用 47 作为随机数种子构造 Random对象时:

public static Random rand2 = new Random(47);
.....
System.out.println(rand2.nextInt(2));
.....

使用该对象调用 nextInt(2)方法,在Eclipse中测试,运行了20次,全部都生成 1,没有出现一次0。

当不提供随机数种子构造Random对象时:

public static Random rand = new Random();
.....
System.out.println(rand.nextInt(2));//0 or 1

在Eclipse中测试,运行了15次,10次出现0,5次出现1。

感觉,使用47做随机数种子,且只需随机 生成 0 和 1 这两个数时,并不适合。

因为,测试了多次,它总是偏向于生成其中某一个数,而另一个数没有出现。

 public class TestRand {
public static Random rand = new Random(); public static Random rand2 = new Random(47); public static void main(String[] args) { //System.out.println(rand.nextInt(2));//0 or 1
//System.out.println(myRand(0,1));// 0 or 1 System.out.println(rand2.nextInt(2));//always 1 or always 0
//System.out.println(myRand2(0, 1));//always 1 or always 0 } public static int myRand(int i, int j){
return rand.nextInt(j - i + 1) + i;
} public static int myRand2(int i, int j){
return rand2.nextInt(j - i + 1) + i;
}
}

java.uti.Random类nextInt方法中随机数种子为47的奇怪问题的更多相关文章

  1. java的Random()类使用方法

    //随机生成1~100之间的一个整数 int randomNumber = (int)(Math.random() * 100) + 1; System.out.println(randomNumbe ...

  2. 测试Random类nextInt()方法连续两次结果一样的概率

    public static void main(String[] args) { int count = 0; int a = 0; Random r = new Random(); while (t ...

  3. java.util.Random 类的 nextInt(int num )

    随机产生3个67~295的整数并找出数值居中的数 并输出中间的数例如:100,225和200,输出200 要随机产生某个范围内的整数,用 java.util.Random 类的 nextInt(int ...

  4. [转] JAVA的Random类

    Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要 ...

  5. tips:Java的Random类和Random函数

    tips:Java的Random类和Random函数! 随机数是一个很有趣的东西,在java中可以通过下面这2种方法得到: (1)Random类: Random类是java.util.Random这个 ...

  6. Java之常用类及方法

    下面我们介绍Java类库所提供的常用类及类的常用方法 一.java.lang.String 1. String类常用的构造函数 public String(String original) 使用串对象 ...

  7. 关于JAVA的Random类的冷知识(转自菜鸟V)

    JAVA的Random类(转) Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基 ...

  8. paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型

    paip.java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...

  9. c++ 类覆盖方法中的协变返回类型

    c++ 类覆盖方法中的协变返回类型 在C++中,只要原来的返回类型是指向类的指针或引用,新的返回类型是指向派生类的指针或引用,覆盖的方法就可以改变返回类型.这样的类型称为协变返回类型(Covarian ...

随机推荐

  1. JQ_开发经验

    1. 把你的代码全部放在闭包里面 这是我用的最多的一条.但是有时候在闭包外面的方法会不能调用.不过你的插件的代码只为你自己的插件服务,所以不存在这个问题,你可以把所有的代码都放在闭包里面.而方法可能应 ...

  2. python基础篇----基本数据类型

    bit  #bit_length 当前数字的二进制,只用用n位来表示a = 123b = a.bit_length()print(b)#==>7

  3. CentOS 6.8 安装Tomcat7

    一.下载Tomcat到服务器上 将Tomcat包下载到devleoper(没有此目录创建一个)目录下: 二.解压安装包 下载好之后,直接解压,使用命令: .tar.gz # 是否使用sudo权限执行根 ...

  4. OpenCV调整彩色图像的饱和度和亮度

    问题 如何调整彩色图像的饱和度和亮度 解决思路 详细步骤: 将RGB图像值归一化到[0, 1] 然后使用函数cvtColor进行色彩空间的转换 接下来可以根据处理灰度图像对比度增强伽马变换或者线性变换 ...

  5. 浅谈我的UI设计之路

    时光匆匆,进入UI学习已经快两个月了,这段时间过得很充实,因为有压力才有收获. 还记的刚刚学习手绘的时候,对于这个行业只有一个初步的认识,知道自己喜欢,但是真正学习的时候才发现,我要学习的东西还有很多 ...

  6. Hyperledger Fabric的一些密码学常识

    Hash 哈希(Hash)算法主要作用是将一段任意长度的数据,经过计算转换成一段定长的数据. 这种算法的特性是:几乎不能通过Hash的结果推导出原文.并且几乎没有可能找到两个不同的信息,对两个信息进行 ...

  7. [T-ARA][너너너][你你你]

    歌词来源:http://music.163.com/#/song?id=22704480 作曲 : Cheang Hai Kee [作曲 : Cheang Hai Kee] 作词 : Cheang H ...

  8. 第二十次ScrumMeeting博客

    第二十次ScrumMeeting博客 本次会议于12月11日(一)22时整在3公寓725房间召开,持续20分钟. 与会人员:刘畅.辛德泰.张安澜.赵奕.方科栋. 1. 每个人的工作(有Issue的内容 ...

  9. 《Linux内核设计与实现》第四章学习笔记——进程调度

                                                                        <Linux内核设计与实现>第四章学习笔记——进程调 ...

  10. NetScaler 10.1的配置以及结合StoreFront的部署

    工作需要,所以英文+中文,绝壁不是装逼...(关于这点勿喷) This post will cover only the basics for getting NetScaler up and run ...