标签:ref init using 常用 param double 字节 数组 lse
1、Random类
Random():创建一个新的随机数生成器。
new一个Random类的对象:
Random r = new Random();
利用该对象产生一个随机整数:
常用nextInt,不过它有两个构造方法:
(1)int x = r.nextInt(); //这样产生的随机数类似于c++的rand(),使用的时候需要取模,而且!!!它会产生负数!
(2)int x = r.nextInt(100); //这个会好用一些,产生的是0~99之间的整数
Random(long seed):使用单个 long 种子创建一个新的随机数生成器。
种子的作用请参考源代码:
/** * Creates a new random number generator using a single {@code long} seed. * The seed is the initial value of the internal state of the pseudorandom * number generator which is maintained by method {@link #next}. * * <p>The invocation {@code new Random(seed)} is equivalent to: * <pre> {@code * Random rnd = new Random(); * rnd.setSeed(seed);}</pre> * * @param seed the initial seed * @see #setSeed(long) */ public Random(long seed) { if (getClass() == Random.class) this.seed = new AtomicLong(initialScramble(seed)); else { // subclass might have overriden setSeed this.seed = new AtomicLong(); setSeed(seed); } } private static long initialScramble(long seed) { return (seed ^ multiplier) & mask; }
有一个重点:由于random产生的随机数是伪随机数,所以当种子不变时,产生的随机数序列其实是不变的,也即可预测
2、Math.random()
会产生[0.0~1.0)之间的浮点数,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布
如果要使用这个方法产生随机整数,参考下面这个例子:
int x = (int)(Math.random()*n);
产生[0,n)之间的整数
以下备注参考:https://www.cnblogs.com/ningvsban/p/3590722.html
备注:下面是Java.util.Random()方法摘要:
下面给几个例子:
int n2 = r.nextInt(10);//方法一
n2 = Math.abs(r.nextInt() % 10);//方法二
标签:ref init using 常用 param double 字节 数组 lse
原文地址:https://www.cnblogs.com/PineZhuo/p/10647786.html