API学习Random类随机数生成

来源:互联网 发布:ubuntu打开共享文件夹 编辑:程序博客网 时间:2024/05/29 18:41
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);    }}

这里写图片描述

原创粉丝点击