`
Scliu123
  • 浏览: 41364 次
  • 性别: 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章将给出解决方法。
	}
}

 

分享到:
评论

相关推荐

    JavaSE_JDK_API_中文版

    `java.util`则包含了集合框架、日期时间处理、随机数生成等工具类。 2. **类(Classes)**:每个类都代表了一种特定的数据结构或功能,如`ArrayList`、`HashMap`等。类定义了属性(fields)和方法(methods),通过...

    中文版_ JDK_ API _1.6

    `java.util`提供各种实用工具类,如集合框架、日期时间处理、随机数生成等。`java.io`则提供了输入输出操作的类和接口。 2. **集合框架** JDK 1.6中的集合框架在`java.util`包下,包括List(如ArrayList和...

    JDK_API_1_6_zh_CN.part04-07

    `java.util`提供了集合框架、日期时间、随机数生成等实用工具,而`java.io`则涉及输入输出操作,如文件读写、流处理等。 2. **集合框架** 集合框架是JDK 1.6的一大亮点,它提供了多种数据结构,如List(列表)、...

    JDK_api.zip_API

    - **java.util**:包含各种通用工具类,如集合框架、日期时间处理、随机数生成等。 - **java.awt**和**javax.swing**:图形用户界面(GUI)库,用于创建桌面应用程序。 - **java.net**:网络编程库,支持TCP/IP和UDP...

    jdk_1_5_0-API_CN 请大家下载查看此文件

    2. `java.util`: 提供了集合框架、日期时间、随机数生成和位集等实用工具。 3. `java.io`: 提供了用于文件操作、流处理和序列化的类。 二、泛型 JDK 1.5.0引入了泛型,这是一种强大的类型系统增强,允许在编译时...

    jdk1.7.0_80

    此外,还改进了默认的SecureRandom实现,提高了随机数生成的强度,这对于安全敏感的应用至关重要。 **JRE7** JRE,即Java Runtime Environment,是Java程序运行所需的环境。它包含Java虚拟机(JVM)、类库以及其他...

    jdk使用164个实例

    10. **`Random`类**:生成随机数,广泛应用于各种模拟和测试场景。 164个实例涵盖了JDK的各个角落,包括基本类型操作、集合框架、并发编程、I/O流、网络编程、反射机制、日期时间处理等。通过这些实例,你可以深入...

    【最新版】jdk-14.0.1_doc-all.zip【亲测可用】最好的Java JDK14文档

    6. **ThreadLocalRandom.current().nextLong()优化**:提升了随机数生成的性能。 7. **其他增强**:包括垃圾收集器的改进、JFR事件流的增强以及一些Javadoc和编译器的改进。 压缩包中的"docs"文件夹包含了以下主要...

    jdk-15_windows-x64_bin -.rar

    8. **实验性线程局部变量API**:引入了一个新的实验性API `ThreadLocalRandom.current().nextLong(Long.MAX_VALUE)`,以提供高效的线程局部随机数生成。 安装JDK 15后,开发者可以通过修改系统环境变量`JAVA_HOME`...

    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协议转换和约束委派 ...

    jdk-17.0.5_macos-aarch64_bin.dmg.zip

    5. **线程本地随机数生成器**:每个线程都有自己独立的随机数生成器实例,提高了并发性能。 6. **内存池改进**:优化了垃圾收集器的性能,特别是G1和ZGC等现代垃圾收集器。 7. **JFR事件流API**:允许开发者编写和...

    java范例开发大全

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

    JDK中文帮助文档

    `java.util`包提供了集合框架、日期时间、随机数生成等功能;`java.io`包处理输入/输出操作;`java.net`包支持网络通信。 **3. 类与接口** 在Java中,类是对象的蓝图,定义了对象的状态(数据成员)和行为(方法)...

    JAVA 范例大全 光盘 资源

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

    java资料 jdk文档

    `java.util`提供了集合框架,如ArrayList、HashMap,以及日期时间、随机数生成等功能。`java.io`涉及输入输出,支持文件操作、流处理等。`java.net`处理网络通信,如Socket编程。`java.nio`是非阻塞I/O,提供高性能...

    java伪随机数

    7. 随机数池的使用:Java 8 引入了SplittableRandom类,该类是专门为并行算法设计的,能高效地在多线程中分割和独立生成随机数序列,适合需要高性能随机数生成的并行计算场景。 8. 源码解析:虽然本篇文章没有提供...

    JDK7 API 帮助文档中文版

    2. **`java.util`包**:这个包提供了许多实用工具类,如集合框架、日期/时间处理、随机数生成和位集等。集合框架包括`ArrayList`、`LinkedList`、`HashMap`等数据结构,它们在存储和操作数据时非常有用。 3. **`...

    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 ...

Global site tag (gtag.js) - Google Analytics