1、模拟双色球生成案例
需求:体彩中有一项是双色球,要求在1-33号共33个红色球里选出6个,1-16号共16个蓝色球中选出一个作为中奖号码,请实现这个需求
package PracticeSomeCode;
import java.util.Arrays;
import java.util.Random;
public class ColorBall {
public static void main(String[] args) {
int[] red = ballBox(33);
int[] blue = ballBox(15);
System.out.println(Arrays.toString(red));
System.out.println(Arrays.toString(blue));
int[] redResult = select(red,6);
int[] blueResult = select(blue,1);
System.out.println("红球:"+Arrays.toString(redResult));
System.out.println("篮球:"+Arrays.toString(blueResult));
}
public static int[] ballBox(int n){
int[] box = new int[n];
for(int i = 0; i < n ; i++ ){
box[i] = i+1;
}
return box;
}
public static int[] select(int[] ballBox, int n){
for(int i = 0; i < n ; i++){
int j = new Random().nextInt(ballBox.length-i);
int temp = ballBox[i];
ballBox[i] = ballBox[j];
ballBox[j] = temp;
}
int[] result = Arrays.copyOf(ballBox,n);
return result;
}
}
2、15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子称为大王,问:哪只猴子会成为大王?
package PracticeSomeCode;
public class MonkeyKing {
public static void main(String[] args) {
boolean[] flag = new boolean[15];
for(int i = 0; i < flag.length; i++){
flag[i] = true;
}
int num = 0;
int monkeyLeft = 15;
int index = 0;
while(monkeyLeft >1){
if(flag[index]){
num++;
if(num == 7){
monkeyLeft --;
flag[index] = false;
num = 0;
}
}
index++;
if(index == 15){index = 0;}
}
for(int i = 0 ; i < flag.length; i++){
if(flag[i]){
System.out.println(i+1);
}
}
}
}