想编一个小程序 
在1到35内随机产生5个数,但这5个数不能相同; 
谢谢啊

解决方案 »

  1.   


                    // 构造数据
    Vector temp = new Vector();
    for (int i=0; i<35; i++) {
    temp.add(new Integer(i + 1));
    }

    // 产生随机数
    int count = 35;
    Object[] result = new Object[5];
    for (int j=1; j<=count; j++) {
    result[j-1] = temp.remove(new Double(Math.random()*(count)).intValue());
    --count;
    if (j == 5) break;
    }
    System.out.println(result[0] + " - " + result[1] + " - " + result[2] + " - " +result[3] + " - " +result[4]);
      

  2.   

    就是一个回调函数
    public List<Integer> ranNum(){
    Random ran=new Random();
    List<Integer> list=new ArrayList<Integer>();
    Integer num;
    for(int i=0;i<5;i++){
     num=ran.newInt(35);
     if(list!=null){
       for(Integer j:list){
          if (j!=num){
             list.add(num);  
         }else{ranNum();};
        }
      } 
    }
    }
      

  3.   

    呵呵,自己在编辑框写的,忘记了return list;
      

  4.   

      Random r = new Random();//  生成 1~100 以内不重复随机数;
       int a = 35,k = 0,n = 0; 
           int[] b = new int[a];
           int[] d = new int[a];
           for(int i = 1;i <= a;i++)
             b[i-1] = i;
           for(int i = 0;i < 5;i++)
           {
            k = r.nextInt(a);
            d[i] = b[k];
            b[k] = b[a-1];
            a--;
           }
           for(int i = 0;i < 5;i++)
           {  
            System.out.print(" " +d[i]);
           }
      

  5.   

    我也编了一个,就是不能通过编译,不知道问题在哪,请指导一下.我的思路是,定义一个数组a, 把第一个随机数给a的第一个
    再生成随机数b,与数组a中的数进行比较,如果不相等就赋值给数组a;
    import   java.util.*;
    public class test1 {
    public static void main(String[] args)
    {
    int[] a = new int[5];
    int i=1;
    int b;
    a[0]=Math.random()*35;
    while(i<=4) do 
    {
    b=(int)(Math.random()*35);
    outer:
    for (int j=0;j<a.length;j++)
    if(b==a[j]) continue outer;
    a[i]=b;
    ++i; 
    }
    for(int m=0;m<a.length;m++)

    System.out.println(a[p]+" ");


    }
    }
      

  6.   

    import java.util.*;public class Test{
    public static void main(String[] args){
    Random r = new Random();
    int[] a = new int[5];
    for(int i = 0; i < a.length;i++){
    int temp = r.nextInt(35)+1;
    for(int j = 0; j < i;){
    if(temp == a[j]){
    temp = r.nextInt(35)+1;
    j = 0;
    }
    else j++;
    }
    a[i] = temp;
    }
    for(int i = 0; i < a.length; i++){
    System.out.println(a[i]);
    }
    }
    }
      

  7.   

    import java.util.*;
    public class test {
        Random num=new Random();
        int[] i=new int[5];
        /** Creates a new instance of test */
        public test() {
            seti();
        }
        
        public void seti()
        {
            for(int j=0;j<=4;j++)
            {
                this.i[j]=num.nextInt(35);
                for(int x=0;x<j;x++)
                {
                    while(this.i[j]==this.i[x])
                    {this.i[j]=num.nextInt(35);x=0;}
                }
            }
        }
        public static void main(String[] args)
        {
            test testnum=new test();
            for(int j=0;j<=4;j++)
            {
                System.out.println(testnum.i[j]);
            }
        }
        
    }
      

  8.   

    Math.Random:
    public int nextInt(int n) 
      

  9.   

    本来不写了,但觉得我这个好象简单点.import java.util.*;
    class SetDemo{
    public static void main(String[] args){
    System.out.println(random());
    }

    public static Set random(){
    Set s=new TreeSet();
    do{
    int i=(int)(Math.random()*35+1);
    s.add(i);
    }while(s.size()<5);
    return s;
    }
    }
      

  10.   

    同意16楼的,我也是一想到关于重复的就先考虑用Set,但是性能上该怎么来考虑?
      

  11.   

    性能上是一样的,他们写的也要用循环,要判断有没有一样的数字,有的就去掉,反之生成.随机有多少次一样的谁也说不清.Set也是起到去重复的功能,只不过好理解点.
      

  12.   

    Set很好很强大,推荐用Set...大家都好敏感啊,一看到35就想到彩票了,我看了回复才反映过来.楼主啊,中了记得来散分哦.
      

  13.   

                     Random ran = new Random();
     Set s = new HashSet();
     do{
     s.add(ran.nextInt(35));
     }while(s.size()<5);
     System.out.println(s);