我写过一个从n个数字里任意选m个(0<=m<=n)数字,把所有可能的情况输出到文件的程序。
你这个稍微改一下就行了,把所有的结果存入Vector,然后产生一个随机数r(0到Vector.size()之间),然后取Vector.elementAt(r)就行了!

解决方案 »

  1.   

    i help y!!
    public class LotteryDrawing{
    /**
    *high --- 49
    *number -- 6
    **/
    public class LotterDrawing(int high, int number){
        int i;
        int[] numbers = new int[high];
        int[] result = new int[number];
        //fill an array with numbers 1 ,2 ,3.....
        for(int i=0; i<high; i++)
           numbers[i] = i+1;
        
        for(int i=0; i<number; i++){
            int j = (int)(Math.random()*(high - i));
            result[i] = numbers[j];
            numbers[j] = numbers[high-i-1];    
        }     //sort array
        Arrays.sort(result);
        return result;
    }
    }
      

  2.   

    大哥 谢谢你~~!~不过我想问个低级问题 
    你那个return result是什么意思啊,你那是个类又没有把它放到一个方法里干嘛用返回值啊
      

  3.   

    marydan(漂浮的心)
    可能是笔误吧。
    你把那个内部类改成方法就成了。
      

  4.   

    谢谢大侠 程序改后正确运行了。/**
    *high --- 49
    *number -- 6
    **/
    import java.util.*;
    public class LotteryDrawing{
        public int[] sortnum(int high,int number){
        int[] numbers = new int[high];
        int[] result = new int[number];
        //fill an array with numbers 1 ,2 ,3.....
        for(int i=0; i<high; i++)
           numbers[i] = i+1;    for(int i=0; i<number; i++){
            int j = (int)(Math.random()*(high - i));
            result[i] = numbers[j];
            numbers[j] = numbers[high-i-1];    
        }     //sort array
        Arrays.sort(result);
        return result;
        }
        public static void main(String args[]){
            LotteryDrawing ld=new LotteryDrawing();
    int[] re=ld.sortnum(49,6);
    for(int i=0;i<6;i++){
        System.out.print(re[i]);
    System.out.print('\t');
    }
    }
    }
      

  5.   

    我觉得netcobol(初学者) 的写法不错,不过这是JAVA,一定要在类里再写一个函数,并取其返回值。
      

  6.   

    很感谢  netcobol(初学者)。我是大连的希望能交个朋友
      

  7.   

    int j = (int)(Math.random()*(high - i));
    这句话中
    Math.random() 将产生什么数?谢谢