注册 登录
编程论坛 JAVA论坛

如何确保每次产生的随机数都不一样

kevin_c 发布于 2015-11-21 17:00, 4696 次点击
题目:已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。
注:参赛球队列表见附录
注2:使用Math.random 来产生随机数。(也可以使用其它方法)
2. 2008 北京奥运会男足参赛国家:
科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,中国,
新西兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利



package test9;
import java.util.*;

class BallTeam{
    BallTeam(){
        HashMap<Integer,String> map = new HashMap<Integer,String>();
        int[] arr = new int[16];
        for(int i = 0;i<arr.length;i++){
            arr[i] = (int)(Math.random()*20-4);
        }
        //怎么确保每次产生的随机数都不一样
        map.put(arr[0],"科特瓦迪");
        map.put(arr[1],"阿根廷");
        map.put(arr[2],"澳大利亚");
        map.put(arr[3],"塞尔维亚");
        map.put(arr[4],"荷兰");
        map.put(arr[5],"尼日利亚");
        map.put(arr[6],"日本");
        map.put(arr[7],"美国");
        map.put(arr[8],"中国");
        map.put(arr[9],"新西兰");
        map.put(arr[10],"巴西");
        map.put(arr[11],"比利时");
        map.put(arr[12],"韩国");
        map.put(arr[13],"喀麦隆");
        map.put(arr[14],"洪都拉斯");
        map.put(arr[15],"意大利");
        
        //分组
        for(int i = 0;i<=15;i++){
                System.out.println(map.get(arr[i]));            
        }
    }
}

public class Test9{
    public static void main(String[] args){
        BallTeam ballTeam = new BallTeam();
    }
}
4 回复
#2
林月儿2015-11-21 17:49
你这不仅是随机,有个发牌算法可以参考
#3
诸葛欧阳2015-11-22 12:50
既然是随机当然下个数与上个数没有关系,一样不一样当然不确定
#4
GrayJerry2015-11-25 15:43
可以用HashSet存放随机生成的数字,HashSet中的元素肯定是不同的
#5
calix2015-11-26 20:06
程序代码:
public static void main(String[] args){
        int n = 10;
        int[] output = new int[n];
        int[] number = new int[n];
        for(int i = 0; i < n; i++){
            number[i] = i;
        }
        Random random = new Random();
        int length = n - 1;
        for(int j = 0; j < n; j++){
            int r = random.nextInt(length + 1);
            output[j] = number[r];
            number[r] = number[length];
            length--;
        }
        for(int i = 0;i < n;i++){
            System.out.println(output[i]);
        }
    }
1