Random类概述
Random类在java.util包下,使用这个类可以生成随机数
package com.sutaoyu.usually_class; import java.util.Random; public class String_test15 { public static void main(String[] args) { Random r = new Random(); //生成int类型的随机数 int ran = r.nextInt(11);//生成0-10之间的随机数 System.out.println(ran);//0 //循环生成5个随机数 for(int i = 0;i<5;i++) { System.out.println(r.nextInt(11));//8 2 1 1 2 } } }
练习:
完成一个彩票机选号码生成器,这里以双色球为例,双色球每注中奖号码由6个不同的红色球号码和1个蓝色球号码组成。红色球号码从1~33中选择;蓝色球号码从1~16中选择。
分析:随机的从1~33中选择6个不同的数字,需要去重,随机从1~16中选择1个数字,可以组成一注中奖号码。
package com.monkey1024.random; import java.util.Arrays; import java.util.Random; public class ColorBall { public static void main(String[] args) { //初始化双色球号码 int[] balls = new int[33]; for(int i=0; i<balls.length; i++){ balls[i] = i + 1; } //创建数组用来标记红球是否重复 boolean[] isUsed = new boolean[33]; //创建数组用来存放6个红球 int[] result = new int[6]; //初始化数组下标 int length = 0; Random r = new Random(); while(true){ //生成0~32的随机数,将随机数作为数组下标,取得红球 int red = r.nextInt(33); //判断生成的红球是否重复 if(isUsed[red] == true){ continue; } //将选中的红球存放到结果中 result[length++] = balls[red]; //如果等于6则说明已经生成了6个红球了,跳出循环 if(length == 6){ break; } //将生成的红球所对应的数组下标标记为true isUsed[red] = true; } //将数组排序 Arrays.sort(result); //生成0~15的随机数,将随机数作为数组下标,取得蓝球 int blue = r.nextInt(16); //将红球打印 System.out.print("红球:"); for(int i=0; i<result.length; i++){ if(i == result.length - 1){ System.out.print(result[i]); }else{ System.out.print(result[i] + ","); } } //将蓝球打印 System.out.print(" 蓝球:" + balls[blue]); } }