2020-08-10

手写一波双色球随机生成器,弄着玩的,记录一下(老老实实搬砖,别老想着中彩票)

public static void main(String[] args) {
    Random random = new Random();
//双色球红号
    int[] red = new int[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33};
//双色球蓝号
    int[] blue = new int[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
    System.out.println("red的长度是:"+red.length);
    System.out.println("blue的长度是:"+blue.length);
    String strRed = "";
    String strBlue= "";
    Map<Integer,Integer> redNumber = new HashMap<>();
    Map<Integer,Integer> blueNumber = new HashMap<>();
    for (int i =0;i< red.length;i++){
        redNumber.put(i,red[i]);
        if (i<16){
            blueNumber.put(i,blue[i]);
        }
    }
    int[] ints = new int[7];
    StringBuffer youBlueNumber=new StringBuffer();
    for (int i =0;i<7;i++){
        Integer index = random.nextInt(32);
        while (true){
            if (redNumber.get(index)!=null){
                ints[i] = redNumber.get(index);
                redNumber.remove(index);
                break;
            }
            index = random.nextInt(32);
        }
        if (i==6){
            index= random.nextInt(15);
            youBlueNumber.append("你的蓝号为:").append(blueNumber.get(index));
        }
    }
    System.out.println("未排序之前的红号:\n"+ Arrays.toString(ints));
    quickSort(ints,0,ints.length-1);
    System.out.println("排序之后的红号:\n"+ Arrays.toString(ints));
    StringBuffer youLastNuber = new StringBuffer();  //此处引用了大佬的快速排序实现
    youLastNuber.append(Arrays.toString(ints)).append(" ").append(youBlueNumber);
    System.out.println("随机生成的号码为\n"+youLastNuber.toString());

}
//这里是复制粘贴的大佬代码,自己看了半天才弄懂
public static void quickSort(int[] arr, int left, int right) {
    int mid= 0;
    if (left < right) {
        mid= getMid(arr, left, right);
        quickSort(arr, left, mid- 1);
        quickSort(arr, mid+ 1, right);
    }
}

private static int getMid(int[] arr, int left, int right) {
    int key = arr[left];
    while (left < right) {
        while (left < right && arr[right] >= key) {
            right--;
        }
        arr[left] = arr[right];
        while (left < right && arr[left] <= key) {
            left++;
        }
        arr[right] = arr[left];
    }
    arr[left] = key;
    return left;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值