标题:如何确保每次产生的随机数都不一样
只看楼主
kevin_c
Rank: 1
等 级:新手上路
帖 子:28
专家分:5
注 册:2015-10-15
结帖率:91.67%
已结贴  问题点数:15 回复次数:4 
如何确保每次产生的随机数都不一样
题目:已知有十六支男子足球队参加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();
    }
}
搜索更多相关主题的帖子: 澳大利亚 科特迪瓦 塞尔维亚 北京奥运会 洪都拉斯 
2015-11-21 17:00
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:4 
你这不仅是随机,有个发牌算法可以参考

剑栈风樯各苦辛,别时冰雪到时春
2015-11-21 17:49
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
得分:4 
既然是随机当然下个数与上个数没有关系,一样不一样当然不确定

一片落叶掉进了回忆的流年。
2015-11-22 12:50
GrayJerry
Rank: 5Rank: 5
等 级:贵宾
威 望:14
帖 子:75
专家分:310
注 册:2015-10-20
得分:4 
可以用HashSet存放随机生成的数字,HashSet中的元素肯定是不同的
2015-11-25 15:43
calix
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:249
专家分:1442
注 册:2015-5-4
得分:4 
程序代码:
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]);
        }
    }
2015-11-26 20:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-459444-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.248276 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved