日期:2014-05-20  浏览次数:20658 次

用java实现生成一指定范围的随机数列
如题
例如:指定范围是20,那就生成一个个数为20的随机数列,数列中的数字范围是1~20,而且数字不能重复出现。

哪位大哥知道麻烦告诉一下小弟,因为是初学java,还是菜鸟一个,谢谢各位!
最好贴出具体代码

------解决方案--------------------
Random rnd=new Random;
rnd.nextInt(20);
核心代码就在上面,至于你要生成20个数,那就创建一个长20的数组,用多个循环嵌套检查生成的数是不是和前面的元素有相同的,有就重新做,没有就赋值
------解决方案--------------------
1.random ra=new random ();
ra.nextInt(20)+1;
2.Math.random()*20
用循环去掉重复
------解决方案--------------------
生产生顺序的序列,再随机进行交换

Java code
import java.util.Random;

public class Test {
        
    public static void main(String args[]) {
        int[] n = getRandomSeries(20);
        for(int a : n) {
            System.out.print(a + " ");
        }
    }
    
    public static int[] getRandomSeries(int size) {
        int[] series = new int[size];
        for(int i = 0; i < size; i++) {
            series[i] = i + 1;
        }
        Random ran = new Random();
        for(int i = 0, k = size * 2; i < k; i++) {
            int index1 = ran.nextInt(size);
            int tmp = series[index1];
            int index2 = ran.nextInt(size);
            series[index1] = series[index2];
            series[index2] = tmp;
        }
        return series;
    }
}

------解决方案--------------------
Java code

        List<Integer> list = new ArrayList<Integer>();
        Random rnd = new Random();
        for (int i = 0; i < 20; i++) {
            int j = rnd.nextInt(21);
            if (!list.contains(j) && j != 0) {
                list.add(j);
            } else {
                --i;
            }
        }
        Integer[] ii = list.toArray(new Integer[20]);
        Arrays.sort(ii);
        for (Integer i : ii) {
            System.out.println(i);
        }