当前位置: 代码迷 >> J2SE >> 用java兑现生成一指定范围的随机数列
  详细解决方案

用java兑现生成一指定范围的随机数列

热度:85   发布时间:2016-04-24 13:07:54.0
用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);        }
  相关解决方案