彩票号码生成算法


闲来无事,我做了一个彩票号码生成器,该程序是个通用程序,方法generateNumber(M, N, P)表示M选N的彩票买了P注,
例如:generateNumber(35, 7, 5);表示35选7买5注.本程序在JDK1.5,Eclipse3.1.2下测试成功!

 

import  java.util.ArrayList;
import  java.util.Collections;
import  java.util.HashSet;
import  java.util.List;
import  java.util.Random;
import  java.util.Set;

/**
 * 
@author  我为J狂
 *
 
*/


public   class  GenerateNumber 

{
    
public   static   void  generateNumber( int  m,  int  n,  int  p)
    
{
        
for  ( int  i  =   0 ; i  <  p; i ++ )
        
{
            Set
< Integer >  numbers  =   new  HashSet < Integer > ();
            
while  ( true )
            
{
                Random random 
=   new  Random();
                
int  newNumber  =  random.nextInt(m);
                numbers.add(newNumber 
+   1 );

                
if  (numbers.size()  ==  n)
                
break ;
            }

            List
< Integer >  sortNumbers  =   new  ArrayList < Integer > (numbers);
            String numberStr 
=   "" ;
            Collections.sort(sortNumbers);
            
for  ( int  num : sortNumbers)
           
{
               String number 
=   "" ;
                
if  (num  <   10 )
                number 
=   " 0 "   +  num;
                
else
                number 
=  String.valueOf(num);
                
if  ( ! numberStr.equals( "" ))
                numberStr 
+=   " , " ;
                numberStr 
+=  number;
            }

            System.out.print(numberStr);
            System.out.println();
        }

 }


 
public   static   void  main(String[] args)
 
{
     generateNumber(
35 7 5 ); // 35选7买5注
 }

}




posted on 2007-02-26 14:37 我为J狂 阅读(2249) 评论(2)  编辑  收藏 所属分类: Java算法

评论

# re: 彩票号码生成算法[未登录] 2007-04-14 15:55 STONE

看了你的几篇文章,好像你比较喜欢用
String s = "";
s += "xxx";
的方式来拼接字符串,为什么不用StringBuffer呢,难道你是不知道这样会有更优的情能吗,还是只是这样写比较方便些?  回复  更多评论   

# re: 彩票号码生成算法 2007-04-14 17:26 我为J狂

@STONE
谢谢您的提醒,以后我会注意的,下不为例,呵呵。
以上的关于String的代码应该改为:
StringBuffer numberStr=new StringBuffer("");
if (!numberStr.toString().equals(""))
numberStr .append(" , ") ;

numberStr.append(number);  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2007年2月>
28293031123
45678910
11121314151617
18192021222324
25262728123
45678910

导航

统计

常用链接

留言簿(11)

随笔分类(48)

文章分类(29)

常去逛逛

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜