Java案例:双色球的实现


【转载至】:http://blog.csdn.net/morixinguan/


//随机生成双色球号码

//案例:6颗红球(33选1)  1颗蓝球(16选1)

代码实现如下:

  1. import java.util.Random;  
  2. import java.util.Arrays;  
  3. //包含Arrays  
  4.   
  5. public class HelloWorld {  
  6.     public static void main(String[] args){  
  7.           
  8.         String[] getball = getBalls();  
  9.         System.out.println(Arrays.toString(getball));  
  10.     }  
  11.       
  12.     public static String[] getBalls()  
  13.     {  
  14.         //随机生成双色球号码  
  15.         //案例:6颗红球(33选1)  1颗蓝球(16选1)  
  16.         String []pool = {  
  17.         ”01”,“02”,“03”,“04”,“05”,“06”,“07”,“08”,  
  18.         ”09”,“10”,“11”,“12”,“13”,“14”,“15”,“16”,  
  19.         ”17”,“18”,“19”,“20”,“21”,“22”,“23”,“24”,  
  20.         ”25”,“26”,“27”,“28”,“29”,“30”,“31”,“32”,“33”  
  21.         };  
  22.         //用一个数组存放6个蓝色的球  
  23.         String[] balls = new String[6];  
  24.         int length = 0 ;  
  25.         //从pool数组中随机选取6个球,放入数组中,并且不能有重复  
  26.         / 
  27.           1、如何随机取 
  28.              Random r = new Random(); 
  29.              r.nextInt(n); //取到0到n之间的随机数 
  30.           2、如果不重复 
  31.              一个下标的球被使用我们给它加个标识 
  32.             boolean[] flag  = new bootlean[pool.length];数组中元素默认为false 
  33.          /  
  34.         boolean[] used = new boolean[pool.length];  
  35.         Random r = new Random();  
  36.         while(true){  
  37.             int index = r.nextInt(pool.length);  
  38.             //说明该下标已经被使用过  
  39.             if(used[index])  
  40.                 continue ; //结束本次循环,继续下一次循环  
  41.             balls[length++] = pool[index];//把选中的球放入球数组  
  42.             used[index] = true ;//把选中的球标识为已经使用过。  
  43.             if(length == balls.length) //如果下标等于6,证明选完了   
  44.                 break ;  
  45.         }  
  46.         //红色的球已经选完了  
  47.         Arrays.sort(balls);  
  48.         //扩容一个空间,最后一个放蓝球  
  49.         //balls = Arrays.copyOf(balls,balls.length+1); 不知道为什么不行,疑惑中  
  50.         String []str = new String[balls.length+1]; //所以我只能使用这种老土的方法来实现数组扩容了  
  51.         for(int i = 0 ; i < balls.length ; i++)  
  52.             str[i] = balls[i];  
  53.         balls = str ;  
  54.         //balls = Arrays.copyOf(balls,balls.length+1);  
  55.         //蓝色的球16选1即可  
  56.         balls[balls.length-1] = pool[r.nextInt(16)];   
  57.         return balls ;  
  58.     }  
  59. }  

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值