当前位置: 代码迷 >> Web前端 >> 取不能反复的随机数
  详细解决方案

取不能反复的随机数

热度:101   发布时间:2012-10-20 14:12:48.0
取不能重复的随机数
利用SET中不能有重复数据

import java.util.HashSet;  
import java.util.Iterator;  
import java.util.Random;  
import java.util.Set;  
  
public class RandomNumber {  
  
    /** 
     * 获取一个四位随机数,并且四位数不重复 
     *  
     * @return Set<Integer> 
     */  
    public static Set<Integer> GetRandomNumber() {  
        // 使用SET以此保证写入的数据不重复  
        Set<Integer> set = new HashSet<Integer>();  
        // 随机数  
        Random random = new Random();  
          
        while (set.size() < 4) {  
            // nextInt返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)  
            // 和指定值(不包括)之间均匀分布的 int 值。  
            set.add(random.nextInt(10));  
        }  
        return set;  
    }  
  
    public static void main(String[] args) {  
        Set<Integer> set = GetRandomNumber();  
        // 使用迭代器  
        Iterator<Integer> iterator = set.iterator();  
        // 临时记录数据  
        String temp = "";  
        while (iterator.hasNext()) {  
            temp += iterator.next();  
            // System.out.print(iterator.next());  
        }  
        System.out.println(temp);  
    }  
}  


利用Collections.shuffle(list)
public void go() {
        List<Integer> list = new ArrayList<Integer>();
        for (int i = 1; i <= 6; i++) {
            list.add(i);
        }

        //打乱 洗牌
        Collections.shuffle(list);
        for (Integer i : list) {
            System.out.print(i + ",");
        }
        System.out.println();
        //倒序
        Collections.reverse(list);
        for (Integer i : list) {
            System.out.print(i + ",");
        }
        System.out.println();
        //指定位置的几位颠倒
        Collections.swap(list, 2, 4);
        for (Integer i : list) {
            System.out.print(i + ",");
        }
    }



  相关解决方案