在java中,利用随机数一次产生0到9不同的十个数字

SHIJIZHE 2008-10-29 06:35:39
我需要尽快得到答案,请各位指教!
...全文
1855 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
whoamiwangwb 2008-10-30
  • 打赏
  • 举报
回复
ArrayList linkedList 更慢 
对于这些list 本质上还是数组 所以建议多用数组
whoamiwangwb 2008-10-30
  • 打赏
  • 举报
回复
java产生随机数是根据时间这个种子来的,如果两次随机数发生的时间很短,那么生成重复随机数的概率要大,加上set的比较和查询时间
比移动数组的效率要高。
whoamiwangwb 2008-10-30
  • 打赏
  • 举报
回复

java.util.Random ran=new java.util.Random();
java.util.Set <Integer> set=new java.util.HashSet <Integer>();//set中的元素是不能重复的
long time = System.currentTimeMillis();

while(set.size() <1000)
{
int n=ran.nextInt(1000);//产生0-9之间的随机数
set.add(n);//添加到set中。set中元素不能重复,因此重复的元素添加不进去
}
System.out.println(set.size());
//for(int i:set);//foreach循环取值
//System.out.println(i);

System.out.println("----------------------------------");
System.out.println(System.currentTimeMillis()-time);//这里消耗的时间为16

try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

int[] a = new int[1000];
for(int i = 0;i<1000;i++){
a[i]=i;
}
set=new java.util.HashSet <Integer>();
time = System.currentTimeMillis();
for(int size = 1000;size>=1;size--){
int n = ran.nextInt(size);
set.add(a[n]);
for(int j = n ;j<999;j++){
a[j]=a[j+1];
}
}

System.out.println(set.size());
//for(int i:set);//foreach循环取值
//System.out.println(i);

System.out.println("----------------------------------");
System.out.println(System.currentTimeMillis()-time);//这里为0
lihan6415151528 2008-10-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sbfivwsll 的回复:]
java.util.Random ran=new java.util.Random();
//方法一:
java.util.Set <Integer> set=new java.util.HashSet <Integer>();//set中的元素是不能重复的
while(set.size() <10)
{
int n=ran.nextInt(10);//产生0-9之间的随机数
set.add(n);//添加到set中。set中元素不能重复,因此重复的元素添加不进去
}
for(int i:set)//foreach循环取值
System.out.println(i);
//方法二:使用ArrayList
java.util.Lis…
[/Quote]

1楼正解
铑枪--突廆孒 2008-10-30
  • 打赏
  • 举报
回复
java.util.Random ran=new java.util.Random();
//方法一:
java.util.Set<Integer> set=new java.util.HashSet<Integer>();//set中的元素是不能重复的
while(set.size()<10)
{
int n=ran.nextInt(10);//产生0-9之间的随机数
set.add(n);//添加到set中。set中元素不能重复,因此重复的元素添加不进去
}
for(int i:set)//foreach循环取值
System.out.println(i);
//方法二:使用ArrayList
java.util.List<Integer> list=new java.util.ArrayList<Integer>();
while(list.size()<10)
{
int n=ran.nextInt(10);
if(!list.contains(n))
list.add(n)//如果n不包涵在list中,才添加
}
for(int i:list)//foreach循环取值
System.out.println(i);

58,452

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧