请问随机选出33个不同的数,然后在这33个数里随机选出7个不同的数该如何做?

解决方案 »

  1.   


    public class Test { public static void main(String[] args) {
    //指定33个数的来源
    int originalArr[] = new int[100];
    ……//对originalArr设不重复值
    int tmpArr1[] = getRandomArraay(originalArr, 33);//从来源中获取33个不重复数
    int tmpArr2[] = getRandomArraay(tmpArr1, 7);//从33个数中获取7个不重复数
    ……
    } public static int[] getRandomArraay(int[] originalArray, int number) {
    if (number > originalArray.length)
    return null;
    int[] result = new int[number];
    int n = originalArray.length;
    for (int i = 0; i < number; i++) {
    int t = (int) (Math.random() * n);
    result[i] = originalArray[t];
    originalArray[t] = originalArray[n - 1];
    n--;
    }
    return result;
    }
    }
      

  2.   

    随机生成的数加到一个set中,当set的size()为33时说明已经取到33个不同的数字了。然后利用这个set随机取出七个不同的数字
      

  3.   

    package test;
    public class RandomNumber { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] a=maopao(randomNum());
    for(int i=0;i<a.length;i++){
    System.out.println(a[i]);
    } }
    public static int[] maopao(int[] a){
         int temp;
         for(int i=0;i<a.length;i++){
         for(int j=a.length-2;j>=0;j--){
         if(a[j]>=a[j+1]){
         temp=a[j];
         a[j]=a[j+1];
         a[j+1]=temp;
         }
        
         }
         }
         return a;
        }


    public static int[] randomNum(){
    int[] a=new int[7];
    a[0]=1+(int)(36*Math.random());
    for(int i=1;i<a.length;i++){
    boolean flag=true;
    while(flag){
    int temp=1+(int)(36*Math.random());
        for(int j=0;j<i;j++){
        if(a[j]==temp){
         flag=true;break;
        }
        else {flag=false;}
         }
    if(flag==false)    
    {a[i]=temp;break;}
    }


    }
    return a;

    }}
    有没有更简单的?
      

  4.   

    package csdn;import java.util.*;public class Rand33 { private static Random ran = new Random(); public static void main(String[] args) {

    //存入整数一直到33个数为止
    //在set中同样的数字不会重复添加
    Set<Integer> set = new HashSet<Integer>();
    while (set.size() != 33) {
    set.add(ran.nextInt(100));// 存入100以内的整数
    }
    //打印出这个set里面存入的数
    System.out.println(set);
    //把这个set存入arr数组中
    Object[] arr = set.toArray();
    //存下标的set
    Set<Integer> index = new HashSet<Integer>();
    while (index.size() != 7) {
    index.add(ran.nextInt(set.size()));
    }
    //遍历下标即arr的下标并打印出所得到的7个不同数字
    Iterator<Integer> it=index.iterator();
    while(it.hasNext()){
    System.out.println(arr[it.next()]);
    }
    }
    }
      

  5.   

    int[] arr = new int[33];
            int[] result = new int[7];
            Random ran = new Random();
            for (int i = 0; i < 33; i++) {
                arr[i] = ran.nextInt();
            }
            for (int i = 0; i < 7; i++) {
                int j = ran.nextInt() % 33;
                if (j < 0) {
                    j = -j;
                }
                result[i] = arr[j];
                System.out.println(result[i]);
            }
      

  6.   

    package com.csdn;import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;/**
     * 请问随机选出33个不同的数,然后在这33个数里随机选出7个不同的数该如何做?
     * 
     * @author xiaotang E-mail: [email protected]
     * @version1.00 创建时间:Mar 29, 2009 5:51:17 AM 类说明:
     */public class RondamT { public static List random(int n) {
    List list = new ArrayList();
    Random r = new Random();
    while (list.size() < n) {
    Integer i = Integer.valueOf(r.nextInt(n)+1);//
    if (!list.contains(i)) {// 判断重复
    list.add(i);// 增加到list里
    } }
    return list; } /**
     * @param args
     */
    public static List random(int n, List list) {
    int k=33;
    List list1 = new ArrayList();
    Random r = new Random();
    while (list1.size() < n) {
    Integer i = Integer.valueOf(r.nextInt(k));//产生0到32随机数
    if (!list1.contains(i)) {// 判断重复
    list1.add(list.get(i.intValue()));//从list里取元素,下标是从0到32,增加到list1,主要在这里
    } } return list1; } public static void main(String[] args) {
    // TODO Auto-generated method stub
    int n = 33, k = 7;
    List list = new ArrayList();
    list = RondamT.random(n);
    System.out.println(list);
    list = RondamT.random(k, list);
    System.out.println(list);
    }}
      

  7.   


    public class doubleBall { /**
     * @param args
     */

    static Random r = new Random(); static ArrayList List1 = new ArrayList();
    static ArrayList List2 = new ArrayList();
    static ArrayList List3 = new ArrayList();

    public static void main(String[] args) {
    // TODO Auto-generated method stub

       for (int j = 0; j < 33; j++) 
       List1.add(j + 1);
       for (int i = 0; i < 16; i++) List2.add(i + 1);
       for (int k = 0; k < 6; k++) {
        int indexRed = r.nextInt(List1.size());
        List3.add(List1.get(indexRed));
        List1.remove(indexRed);
       }
       Collections.sort(List3);
       
       for(int p=0;p<List3.size();p++){
       
       System.out.print(List3.get(p)+";");
       }
     
       int indexBlue = r.nextInt(List2.size());
       System.out.println("/" + List2.get(indexBlue));
     
    }}
      

  8.   

    不是彩票吧,得看数的来源...public class RandomSet {
    private Set<Integer> seedSet = new HashSet<Integer>();
    private Set<Integer> set = new HashSet<Integer>();
    private Random ran = new Random(); RandomSet(int len,int seed) {
    while(seedSet.size() != len){
    seedSet.add(ran.nextInt(seed));
    }

    Object[] arr = seedSet.toArray();
    while(set.size() != 7){
    set.add((Integer) arr[ran.nextInt(seedSet.size())]);
    }

    System.out.println(Arrays.toString(seedSet.toArray()));
    System.out.println(Arrays.toString(set.toArray()));
    }

    public static void main(String[] args) {
    new RandomSet(33,100);
    }
    }
      

  9.   

    买彩票的吧?public class TryArray {
           public static void main(String[] args) {
    // 福利彩票机选程序
    // 1~33的随机7个不同的数
    int a[] = new int[7];
    a[0] = (int) (Math.random() * 33) + 1;
    for (int i = 1; i < a.length;) {
    int t = (int) (Math.random() * 29) + 1; // 1~29
    boolean f = true;
    for (int j = 0; j < i; j++) {
    if (t == a[j]) {
    f = false;
    break;
    }
    }
    if (f) {
    a[i] = t;
    i++;
    }
    }
    // 排序
    for (int j = 5; j >= 1; j--) {
    for (int i = 0; i < j; i++) {
    if (a[i] > a[i + 1]) {
    int t = a[i];
    a[i] = a[i + 1];
    a[i + 1] = t;
    }
    }
    }
    // 结果显示
    for (int i = 0; i < a.length - 1; i++) {
    System.out.print(a[i] + "\t");
    }
    System.out.println("--  " + a[6]);
    }
    }