赞
踩
给定任意个不重复的数字,对其进行随机排序
首先想到可以将给定的数字放在一个集合A中,初步定为一个ArrayList,这样,可以用A集合的长度来做为随机数的基数,取出一个数x,放到结果集合B中,然后将数x从A集合删除;接着用A集合剩下的长度作为基础重复上一步操作,最终可以得到结果集合B。考虑到用Arraylist删除比较慢,可以用LinkedList来代替。也可以用数组来模拟LinkedList
public class Test_ZhongHe {
}
1.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是[0-1)(不包含1)之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机。
r=Math.random的范围:0.0<=r<1.0
Math.random()*10+1; // 1---10;
Math.random()*10 ; // 0-----9
2. 在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以产生随机整数、随机float、随机double,随机long,这个也是经常用的一个取随机数的方法。
3. 在我们的System类中有一个currentTimeMillis()方法,这个方法返回一个从1970年1月1号0点0分0秒到目前的一个毫秒数,返回类型是long,我们可以拿他作为一个随机数,我们可以拿他对一些数取模,就可以把他限制在一个范围之内啦
其实在Random的默认构造方法里也是使用上面第三种方法进行随机数的产生的
对于方法二中的Random类有以下说明:
java.util.Random类有两种方式构建方式:带种子和不带种子
(2) 如果没有提供种子数,Random实例的种子数将是当前时间的毫秒数,可以通过System.currentTimeMillis()来获得当前时间的毫秒数。打开JDK的源代码,
public Random() { this(System.currentTimeMillis()); }
返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值,
产生的随机数的范围: nextInt() --- [0, 31]
int nextInt(int n)
返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值,产生的随机数的范围是 :nextInt(n)------- [0, n-1]
参考:http://blog.csdn.net/u010802573/article/details/9159747
java随机数原理及应用 http://tech.e800.com.cn/articles/2009/1224/1261632576056_1.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。