Java SE学习之Random

本文是学习网络上的文章时的总结以及自己的一点实践,感谢大家无私的分享。

昨天在项目中想使用几个随机数,结果使用Random时居然出现随机数相同的情况,忍不住查了些资料。

现将代码总结如下:

package SE;

import java.util.Random;

public class RandomUnit {

	/**
	 *
	 * <p>
	 * 无种子参数的构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,
	 * 然后使用这个种子数构造Random对象。
	 * </p>
	 * @author zhangjunshuai
	 * @date 2014-10-28 上午11:07:53
	 */
	static void randomNull(){
		for (int i = 0; i < 100; i++) {
			Random r = new Random();
			System.out.println("无种子参数:"+r.nextInt());
		}
	}
	/**
	 * <p>
	 * 在种子参数是同一个数字的时候,出现只有一个随机数的情况
	 * </p>
	 * @author zhangjunshuai
	 * @date 2014-10-28 上午11:18:17
	 */
	static void randomHave(){
		for (int i = 0; i < 100; i++) {
			Random r = new Random(37);
			System.out.println("有种子参数:"+r.nextInt());
		}
	}

	/**
	 *
	 * <p>
	 * 注意random调用方法的顺序变化之后,产生的随机值才会变
	 * </p>
	 * @author zhangjunshuai
	 * @date 2014-10-27 下午6:54:17
	 */
	static void random(){
		Random r = new Random(47);
		System.out.println(r.nextInt());
		System.out.println(r.nextBoolean());
		Random w= new Random(47);
		System.out.println(w.nextInt());
		System.out.println(w.nextBoolean());
		Random h= new Random(47);
		System.out.println(h.nextFloat());
		System.out.println(h.nextInt());

		System.out.println(h.nextBoolean());
	}
	/**
	 *
	 * <p>
	 * 利用setSeed方法实现伪随机数
	 * </p>
	 * @author zhangjunshuai
	 * @date 2014-10-28 上午11:29:02
	 */
	static void setSeed(){
		Random r = new Random();
		for (int i = 0; i < 100; i++) {

			System.out.println("有种子参数:"+r.nextInt(270));
			r.setSeed((long)r.nextLong());
		}
	}
	/**
	 * <p>
	 * </p>
	 * @author zhangjunshuai
	 * @date 2014-10-28 上午10:56:48
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//randomNull();
		//randomHave();
		//random();
		setSeed();

	}

}

参考:

http://lehsyh.iteye.com/blog/646658

时间: 2024-11-09 10:40:30

Java SE学习之Random的相关文章

java SE学习之线程同步(详细介绍)

       java程序中可以允许存在多个线程,但在处理多线程问题时,必须注意这样一个问题:               当两个或多个线程同时访问同一个变量,并且一些线程需要修改这个变量时,那么这个程序是该如何执行?              也就是先访问这个变量还是先修改这个变量.              在学习线程的这段时间里,我也一直被这个问题所困扰!但是今天终于算是搞明白了.              于是将这些好的列子一一列举出来,分享一下. (1)什么是线程同步 ?      

Java SE学习之数组——匿名数组和不规则数组

本文是学习网络上的文章时的总结以及自己的一点实践,感谢大家无私的分享. 最近偶然遇到了数组的问题,学习了匿名数组和不规则数组. 匿名数组适用于只使用一次的情况:不规则数组适用是每行数据总数不确定的情况. 下面贴上我的小例子 package SE; import java.util.Random; /** * <p> * Description: 此方法是对匿名数组和不规则数组的学习 * </p> * @author zhangjunshuai * @version 1.0 * Cr

Java SE学习之printf 日期转换符

本文是学习网络上的文章时的总结,感谢大家无私的分享. System.out.printf()方法能够对日期做处理输出. 相应列表 转换符 类型 举例 c 完整的日期和时间 Mon Feb 09 18:05:11 PST 2004 F ISO 8061日期 2004-02-09 D 美国格式的日期 02/09/2004 T 24小时时间 18:03:23 r 12小时时间 05:03:23 pm R 24小时时间没有秒 18:05 Y 4位数字的年(前面补0) 2004 y 年的后两位数字(前面补

Java SE学习之System.getProperties

本文是学习网络上的文章时的总结,感谢大家无私的分享. Java提供的java System.getProperties()方法是获取运行环境的系统参数的,综合了网上各位大神的帖子我总结出一些可用属性. java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目录 java.vm.specification.version Java 虚拟机规范版本 java

Java SE学习之方法参数的使用

本文是学习网络上的文章时的总结以及自己的一点实践,感谢大家无私的分享. Java程序设计语言对对象采用的不是引用调用,实际上,对象引用进行的是值传递. 在Java程序设计语言中,方法参数的使用情况: 1.一个方法不能修改一个基本数据类型的参数(即数值型和布尔型): 2.一个方法可以改变一个对象参数的状态: 3.一个方法不能实现让对象参数引用一个新的对象. 下面是测试代码 package SE; public class ParamTest { /** * <p> * </p> *

Java SE学习之枚举总结

本文是学习网络上的文章时的总结以及自己的一点实践,感谢大家无私的分享. 最近在看Java基础方面的书的时候,又遇到了枚举的介绍.在网上查了一些资料,对这些资料进行一些总结. 用法一:常量 package meiju; /** * * @ClassName: Color * @Description: 枚举变量的常量用法 * @author zhangjunshuai [email protected] * @date 2014-11-16 下午07:29:40 * */ public enum

java se学习(一)

环境:java jdk1.8+eclipse 1.HelloWorld public class HelloWorld { public static void main(String[] args){ System.out.println("Hello World"); } } 在eclipse下编译运行正常输出Hello World,但是在dos,进入到工程src目录下执行 javac HelloWorld.java java  HelloWorld a.执行java 命令时,不可

Java SE学习笔记-IO

1.主要内容 2.详细内容 2.1.IO流概念 (1)用来处理设备(硬盘,控制台,内存)之间的数据: (2)Java中对数据的操作都是通过流的方式: (3)Java中用于操作流的类都是放在IO包内: (4)按照流操作的数据类型不同,可以分为字节流和字符流:而字符流是为了方便中文的操作而来的: (5)按照流的流向不同分为:输入流和输出流. 2.2.IO流常用基类 2.2.1.字节流的抽象基类 完整图如下图所示: 其中重点的类如下图所示: (1)InputStream:输入字节流,字节读取流抽象类:

java se学习(二)数组与字符串、数据类型转

一.数组与字符串特点 1.数组一旦初始化,其容量即限定 2.字符串一旦初始化,其长度是固定的,内容也是固定的,如果要改变值,只能放弃原来的内存空间,重新申请内存空间. 二. 数据类型转换的种类 java数据类型的转换一般分三种,分别是: (1). 简单数据类型之间的转换 (2). 字符串与其它数据类型的转换 (3). 其它实用数据类型转换 三. 简单数据类型之间的转换 在Java中整型.实型.字符型被视为简单数据类型,这些类型由低级到高级分别为 (byte,short,char)--int--l