求一算法

zhouhao0107 2006-11-07 05:24:21
从0 – 9 十个数字中取数字,要求每次取出的值是随机的,取十次且十次取到的值没有相同的,有什么好的算法可以实现啊?请高手指教。
...全文
280 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovelycatty 2006-11-09
  • 打赏
  • 举报
回复
mark
吴冬冬 2006-11-07
  • 打赏
  • 举报
回复
另一种算法
import java.util.*;

public class ShuffleTest {
public static void main(String[] args){
ArrayList<Integer> list=new ArrayList<Integer>();
for(int i=0;i<=9;i++)
list.add(i);
Collections.shuffle(list,new Random());
for(int i=0;i<10;i++)
System.out.println(list.get(i));
}
}
吴冬冬 2006-11-07
  • 打赏
  • 举报
回复
import java.util.LinkedList;
import java.util.Random;

public class RandomTest {
public static void main(String[] args){
LinkedList<Integer> list=new LinkedList<Integer>();
for(int i=0;i<=9;i++){
list.add(i);
}
for(int i=10;i>0;i--){
Random rand=new Random();
double randNumber=rand.nextDouble();
int n=(int)(randNumber*i);
System.out.println(list.get(n));
list.remove(n);
}
}
}
SaintKaKa 2006-11-07
  • 打赏
  • 举报
回复
学习了
angelleecash 2006-11-07
  • 打赏
  • 举报
回复
Vector v = new Vector();
for (int i = 0; i < 10; i++) {
v.addElement("" + i);
}
Random r = new Random();
int index = -1;
for (int i = 9; i > 0; i--) {
index = Math.abs(r.nextInt()) % (i + 1);
System.out.print(v.elementAt(index) + " ");
v.removeElementAt(index);
}
System.out.println(v.elementAt(0));
v.removeElementAt(0);
angelleecash 2006-11-07
  • 打赏
  • 举报
回复
Sorry,我没看太明白,严重Sorry
angelleecash 2006-11-07
  • 打赏
  • 举报
回复
Vector v = new Vector();
for (int i = 0; i < 10; i++) {
v.addElement("" + i);
}
Random r = new Random();
int index = -1;
for (int i = 9; i > 0; i--) {
index = Math.abs(r.nextInt()) % i;
System.out.println(v.elementAt(index));
v.removeElementAt(index);
}
System.out.println(v.elementAt(0));
v.removeElementAt(0);]
hdhmail2000 2006-11-07
  • 打赏
  • 举报
回复
import java.util.Random;
import java.util.Arrays;
public class RadomInts{
public int[] getInts(int MAX,int NEED){
int[] ints=new int[MAX];
int[] returnInts=new int[NEED];
//产生整数序列
for(int i=1;i<=MAX;i++){
ints[i-1]=i;
}
int temp;
int t1;
int t2;
Random a=new Random();
for(int i=0;i<MAX/3;i++){
t1=a.nextInt(MAX);
t2=a.nextInt(MAX);
temp=ints[t1];ints[t1]=ints[t2];ints[t2]=temp;

}
for(int i=0;i<NEED;i++){
returnInts[i]=ints[i];
}
Arrays.sort(returnInts);
return returnInts;
}
}
  • 打赏
  • 举报
回复
定义一个动态数组,先放从0到9的十个数值,假设为A数组。

第一次用随机函数在0-9间随机取一个值,去取A[X]或者A(X)(看你用什么语言了),取完再把这个元素删除掉,其后面的元素提前(最好用有自动调整功能的数组对象)。

第二次用随机函数在0-8间随机取一个值,去取A[X]或者A(X)。。。
。。。
最后取剩下的最后一个元素即可。
jackxing 2006-11-07
  • 打赏
  • 举报
回复
mark

62,614

社区成员

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

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