`
Scliu123
  • 浏览: 39867 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

JDK_实例(生成随机数)

JDK 
阅读更多
package book.number;

import java.util.Random;
/**
 * Java实用工具类库中的类java.util.Random提供了产生各种类型随机数的方法。
 * 它可以产生int、long、float、double以及Goussian等类型的随机数。
 * java.lang.Math中的方法random()只产生double型的随机数。
 */
public class RandomNumber {

	public static void main(String[] args) {

		// 使用java.lang.Math的random方法生成随机数
		System.out.println("Math.random(): " + Math.random());

		// 使用不带参数的构造方法构造java.util.Random对象
		System.out.println("使用不带参数的构造方法构造的Random对象:");
		Random rd1 = new Random();
		// 产生各种类型的随机数
		// 按均匀分布产生整数
		System.out.println("int: " + rd1.nextInt());
		// 按均匀分布产生长整数
		System.out.println("long: " + rd1.nextLong());
		// 按均匀分布产生大于等于0,小于1的float数[0, 1)
		System.out.println("float: " + rd1.nextFloat());
		// 按均匀分布产生[0, 1)范围的double数
		System.out.println("double: " + rd1.nextDouble());
		// 按正态分布产生随机数
		System.out.println("Gaussian: " + rd1.nextGaussian());

		// 生成一系列随机数
		System.out.print("随机整数序列:");
		for (int i = 0; i < 5; i++) {
			System.out.print(rd1.nextInt() + "  ");
		}
		System.out.println();

		// 指定随机数产生的范围
		System.out.print("[0,10)范围内随机整数序列: ");
		for (int i = 0; i < 10; i++) {
			// Random的nextInt(int n)方法返回一个[0, n)范围内的随机数
			System.out.print(rd1.nextInt(10) + "  ");
		}
		System.out.println();
		System.out.print("[5,23)范围内随机整数序列: ");
		for (int i = 0; i < 10; i++) {
			// 因为nextInt(int n)方法的范围是从0开始的,
			// 所以需要把区间[5,28)转换成5 + [0, 23)。
			System.out.print(5 + rd1.nextInt(23) + "  ");
		}
		System.out.println();
		System.out.print("利用nextFloat()生成[0,99)范围内的随机整数序列: ");
		for (int i = 0; i < 10; i++) {
			System.out.print((int) (rd1.nextFloat() * 100) + "  ");
		}
		System.out.println();
		System.out.println();

		// 使用带参数的构造方法构造Random对象
		// 构造函数的参数是long类型,是生成随机数的种子。
		System.out.println("使用带参数的构造方法构造的Random对象:");
		Random ran2 = new Random(10);
		// 对于种子相同的Random对象,生成的随机数序列是一样的。
		System.out.println("使用种子为10的Random对象生成[0,10)内随机整数序列: ");
		for (int i = 0; i < 10; i++) {
			System.out.print(ran2.nextInt(10) + "  ");
		}
		System.out.println();
		Random ran3 = new Random(10);
		System.out.println("使用另一个种子为10的Random对象生成[0,10)内随机整数序列: ");
		for (int i = 0; i < 10; i++) {
			System.out.print(ran3.nextInt(10) + "  ");
		}
		System.out.println();
		// ran2和ran3生成的随机数序列是一样的,如果使用两个没带参数构造函数生成的Random对象,
		// 则不会出现这种情况,这是因为在没带参数构造函数生成的Random对象的种子缺省是当前系统时间的毫秒数。

		// 另外,直接使用Random无法避免生成重复的数字,如果需要生成不重复的随机数序列,需要借助数组和集合类
		//本书第4章将给出解决方法。
	}
}

 

分享到:
评论

相关推荐

    Java JDK实例宝典

    全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。 第1章 ...

    jdk1.8.0_181(64位).7z

    更好地支持高熵随机数生成 java.security.cert.PKIXRevocationChecker用于配置X.509证书的吊销检查的新类 适用于Windows的64位PKCS11 Kerberos中的新rcache类型5重播缓存 支持Kerberos 5协议转换和约束委派 ...

    java范例开发大全

    实例30 求最大的随机数 44 3.5 switch语句 45 实例31 判断字母分类 46 实例32 优良及差 47 实例33 打印任意一年日历 48 实例34 一年四季的划分 51 第2篇 Java数据处理 第4章 异常处理(教学视频:62分钟) 54 4.1 ...

    JAVA 范例大全 光盘 资源

    实例1 下载、安装并配置JDK 1 实例2 第一个Java程序 3 实例3 在Eclipse中创建第一个Java程序 4 常见问题 javac不是内部或者外部命令 6 常见问题 找不到类文件 6 常见问题 语法错误 7 第2章 Java基础语法 9 ...

    Java范例开发大全 (源程序)

     实例30 求最大的随机数 44  3.5 switch语句 45  实例31 判断字母分类 46  实例32 优良及差 47  实例33 打印任意一年日历 48  实例34 一年四季的划分 51  第2篇 Java数据处理  第4章 异常处理(教学...

    java范例开发大全(pdf&源码)

    实例30 求最大的随机数 44 3.5 switch语句 45 实例31 判断字母分类 46 实例32 优良及差 47 实例33 打印任意一年日历 48 实例34 一年四季的划分 51 第2篇 Java数据处理 第4章 异常处理(教学视频:62分钟) 54 4.1 ...

    java范例开发大全源代码

     实例30 求最大的随机数 44  3.5 switch语句 45  实例31 判断字母分类 46  实例32 优良及差 47  实例33 打印任意一年日历 48  实例34 一年四季的划分 51  第2篇 Java数据处理  第4章 异常处理...

    Java范例开发大全(全书源程序)

    实例30 求最大的随机数 44 3.5 switch语句 45 实例31 判断字母分类 46 实例32 优良及差 47 实例33 打印任意一年日历 48 实例34 一年四季的划分 51 第2篇 Java数据处理 第4章 异常处理(教学视频:62分钟) ...

    jce-aes-cipher-poc

    使用SecureRandom.getInstanceStrong生成随机数。 秘密密钥可以具有到期日期,以最大程度地减少可能的密钥/ IV重用。 所有对密钥的访问都将首先通过验证。 验证包括AlgorithmConstraints接口,用于检查弱密钥...

    java 基础的课堂笔记整理

    1.1如何安装jdk 2 1.2检查是否安装成功 2 1.3当编译java程序报错, 2 1.4注意: 3 1.5DOS命令 3 1.6注释 3 1.7 实例演示: 3 1.7.1 HelloWorld程序 3 2.1八种基本类型: 4 2.2If分支语句 里面使用boolean来控制。 4 ...

    Java开发技术大全(500个源代码).

    示例描述:本章演示如何开始使用JDK进行程序的开发。 HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 ...

Global site tag (gtag.js) - Google Analytics