package com.qzkj.IO;

import java.util.Random;

public class Demo{

	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无法避免生成重复的数字,如果需要生成不重复的随机数序列,需要借助数组和集合类  
	}}
最近下载更多
wjdxsj  LV1 2020年11月2日
chenqiwax  LV4 2019年8月2日
han108  LV16 2019年3月6日
飞翔的企鹅嗯嗯  LV11 2019年1月30日
localhost1  LV1 2018年7月4日
都是老虎啊  LV12 2018年6月25日
925386146  LV1 2017年8月8日
wade123  LV31 2014年11月7日
最近浏览更多
heqian  LV17 2023年1月10日
任家毅  LV1 2021年6月1日
微量的记忆  LV10 2021年4月12日
wjdxsj  LV1 2020年11月2日
yhj123  LV2 2020年6月19日
jsjlvpan  LV1 2019年9月18日
废人a123456789 2019年8月6日
暂无贡献等级
chenqiwax  LV4 2019年8月2日
cheeseni  LV1 2019年7月6日
飞翔的企鹅嗯嗯  LV11 2019年1月30日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友