当前页面: 开发资料首页 → J2SE 专题 → Random随机生成1-20000个不相同的数字?
Random随机生成1-20000个不相同的数字?
摘要: Random随机生成1-20000个不相同的数字?
怎么判断不相同的,用什么方法效率高点???
没太懂,从20000个数中判断了,逐个判断??
肯定是循环判断撒,要判断以前用过没有~~
难度系数一定,如果算法复杂,效率高,如果算法简单,效率低。
方法很多。
找本算法书,很多都有,查找算法。
什么折半拉,2分法拉。
还可以用堆栈来做。
http://community.csdn.net/Expert/TopicView3.asp?id=5047441
很容易的
呵呵
生成一个随机数x插入一个到排序的链表中:
f(x,list){
如果list为空,list.add(x);
如果list有一个元素,x大于它,list.add(x) else list.insert(x);
if(x>list中间那个数)
f(x,list右段)
else if(x
f(x,list左段)
//如果相等,返回
return;
}
//希望你能看懂,二分法,排序与判断数是否相同同时进行,一个排序后的20000个数14次可以找到那个与之相同的数,如果用循环的方法遍历20000个未排序的数的话,那就必须要20000次。
数据结构未深思,list不一定适合,总之是一个可以用二分法并且可以插入值的数据结构
//生成随机数表
Random random = new Random();
random.setSeed(System.currentTimeMillis());
Set set = new HashSet();
while(set.size() < 20000){
set.add(Math.abs(random.nextInt()));
}