API学习Random类随机数生成

package com.wonders.api.date;

import java.util.Random;

/**
 * JDK1.7
 * Random
 * (1)这个类的实例是用来生成一串数字随机数。该类使用一个48比特位的种子,使用一个线性一直的公式来修改。
 * (2)如果该类有两个具有相同种子的实例被创建出来,为每一个实例调用相同的方法的序列,它们将生成相同的数字序列返回。
 * (3)为了保证这种性质,Random类使用了特殊的算法.为了实现Java代码的绝对可移植性,Java实现必须使用这里显示的所有算法.
 * 然而,只要它们遵守所有方法的一般约定,Rondom的子类允许使用其他的算法。
 * (4)由类Random实现的算法使用一种受保护的实用方法,每次调用可以提供32个伪随机生成位.
 * (5)很多应用中都可以发现Math.random()的使用.
 * (6)java.util.Random的实例是线程安全的,相同的 java.util.Random实例的并发使用跨线程可能会遇到资源竞争和随之而来的糟糕表现。
 * (7)可以考虑在多线程中使用类ThreadLocalRandom.
 * (8)java.util.Random的实例并不是加密安全的,可以考虑使用SecureRandom获得一个加密安全的伪随机数生成器,用于安全敏感的应用程序.
 * (9)有两个构造方法
 * (a)Random():创建一个新的随机数生成器。这个构造函数将设置该随机数生成器的种子,这个值是一个很可能与此构造函数的任何其他调用不同的值。
 * (b)Random(long seed):使用一个long类型的种子创建一个新生的随机数生成器.这个种子值是伪随机数生成器内部的初始化值,这个种子是通过next(int)来维护的.
 * 这个构造器的调用等价于:Random r = new Random();r.setSeed(seed);
 * 参数seed是:初始化的随机数种子.
 * @author liyongyong
 *
 */
public class RandomTest {

	public static void main(String[] args) {
		Random random = new Random();
		/**
		 * public void setSeed(long seed)
		 * 使用一个单独的long类型数值来设置随机数生成器的种子。
		 * setSeed的一般规定是,它改变了这个随机数生成器对象的状态,目的是让它与刚刚创建的参数种子的状态完全相同。
		 * 类Random的setSeed方法是通过原子性的更新种子((seed ^ 0x5DEECE66DL) & ((1L << 48) - 1))并且
		 * 通过调用 nextGaussian()来清除haveNextNextGaussian的标志.
		 * 类Random的setSeed的实现恰巧使用了给定种子的48比特位。
		 * 然而,一般来说,重写方法可以使用长参数的所有64位作为种子值。
		 */
		
		/**
		 * 返回一个int类型的随机数
		 */
		int num = random.nextInt(100);
		System.out.println("100以内的随机数是 : " + num);
		
		/**
		 * 返回一个布尔类型的随机数
		 */
		boolean flag = random.nextBoolean();
		System.out.println("返回的随机数是 " + flag);
		
		/**
		 * 返回一个double类型的随机数
		 */
		double d = random.nextDouble();
		System.out.println("返回的double类型随机数是 : " + d);
		
		/**
		 * 返回一个float类型的随机数
		 */
		float f = random.nextFloat();
		System.out.println("返回的float类型随机数是 : " + f);
		
		/**
		 * 返回一个long类型的随机数
		 */
		long l = random.nextLong();
		System.out.println("返回的long类型随机数是 : " + l);
	}
}

这里写图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值