Random random = new Random()
Random random2 = new Random(long seed)
package dailytest;
import java.util.Random; import org.junit.Test; /** * Random类学习 * @author yrr * */ public class RandomTest { /** * 使用有参数构造生成Random对象 * 无论执行多少次,每次获得的结果都相同 * -1157793070 * 1913984760 * 1107254586 */ @Test public void test01(){ Random random = new Random(10); for (int i = 0; i < 3; i++) { System.out.println(random.nextInt()); } } }
/**
* 测试Random类中的简单方法
*/
@Test
public void test02() { Random random = new Random(); System.out.println("nextInt():" + random.nextInt()); //随机生成一个整数,这个整数的范围就是int类型的范围-2^31~2^31-1 System.out.println("nextLong():" + random.nextLong()); //随机生成long类型范围的整数 System.out.println("nextFloat():" + random.nextFloat()); //随机生成[0, 1.0)区间的小数 System.out.println("nextDouble():" + random.nextDouble()); //随机生成[0, 1.0)区间的小数 byte[] byteArr = new byte[10]; random.nextBytes(byteArr); //随机生成byte,并存放在定义的数组中,生成的个数等于定义的数组的个数 for (int i = 0; i < byteArr.length; i++) { System.out.println(byteArr[i]); } /** * random.nextInt(n) * 随机生成一个正整数,整数范围[0,n) * 若是想生成其余范围的数据,能够在此基础上进行加减 * * 例如: * 1. 想生成范围在[0,n]的整数 * random.nextInt(n+1) * 2. 想生成范围在[m,n]的整数, n > m * random.nextInt(n-m+1) + m * random.nextInt() % (n-m) + m * 3. 想生成范围在(m,n)的整数 * random.nextInt(n-m+1) + m -1 * random.nextInt() % (n-m) + m - 1 * ...... 主要是依靠简单的加减法 */ System.out.println("nextInt(10):" + random.nextInt(10)); //随机生成一个整数,整数范围[0,10) for (int i = 0; i < 20; i++) { //[3,15) //这里有坑,须要注意,若是前面用了+号,应该要把计算结果总体用括号括起来,否则它会把+号解释为字符串拼接 System.out.println("我生成了一个[3,15)区间的数,它是:" + (random.nextInt(12) + 3)); } }
package dailytest;
import java.util.Random; import org.junit.Test; /** * Random类学习 * @author yrr * */ public class RandomTest { /** * 测试Random类中 JDK1.8提供的新方法 * JDK1.8新增了Stream的概念 * 在Random中,为double, int, long类型分别增长了对应的生成随机数的方法 * 鉴于每种数据类型方法原理是同样的,因此,这里以int类型举例说明用法 */ @Test public void test03() { Random random = new Random(); random.ints(); //生成无限个int类型范围内的数据,由于是无限个,这里就不打印了,会卡死的...... random.ints(10, 100); //生成无限个[10,100)范围内的数据 /** * 这里的toArray 是Stream里提供的方法 */ int[] arr = random.ints(10).toArray(); //生成10个int范围类的个数。 System.out.println(arr.length); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } //生成5个在[10,100)范围内的整数 random.ints(5, 10, 100).forEach(System.out :: println); //这句话和下面三句话功能相同 //forEach等价于: arr = random.ints(5, 10, 100).toArray(); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } /** * 对于 * random.ints(); * random.ints(ori, des); * 两个生成无限个随机数的方法,咱们能够利用Stream里的terminal操做,来截断无限这个操做 */ //limit表示限制只要10个,等价于random.ints(10) random.ints().limit(10).forEach(System.out :: println); //等价于random.ints(5, 10, 100) random.ints(10, 100).limit(5).forEach(System.out :: println); } }