定义一个数组,里面有10个元素,然后我想随机取10个元素中的4个,求方法.(android ,java都行)

如题所述

简单点的,每次生成一个随便数(0-9),然后用这个下标到数组中去取数,取出来后判断是不是取过了,如果已经取过了,丢弃它,重新再取,总会得到4个的.
也可以每次生成两个随机数(0-9),然后交换数组中这两个下标的数值,多交换几次,那么数组就是混洗开了,取混洗后的数组的前四个数就行.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-22
Random类 java.util.Random类是基于 线性同余 算法的一种伪随机数序列生成器
new Random().nextInt(10);产生一个不大于10的随机数
注Math中有个random()方法 随机生成大于等于0小于1的double数

得到随机数直接根据下标取数组值就是
第2个回答  2011-11-22
String[] arg = {"a" ,"b" ,"c" ,"d" ,"e" ,"f" ,"g" ,"h" ,"i" ,"j"};
List<Integer> list = new ArrayList<Integer>();
Random rand = new Random();
int rom = rand.nextInt(10);
//循环四次
for (int i = 0; i < 4; i++) {
boolean flag = false;

//无限循环
for (int k = 1;k == 1;) {
rom = rand.nextInt(10);
if (list.size() > 0) {
//循环list作比较
for (int j = 0; j < list.size(); j++) {
if (rom == (int)list.get(j)) {
break;
}
if (j == (list.size()-1) && rom != (int)list.get(j)) {
flag = true;
}
}
}else {
flag = true;
}

if (flag) {
break;
}
}
list.add(rom);
String s = new String();
s = arg[rom];
System.out.println(s);
第3个回答  2011-11-22
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Test2 {

/**
* @param args
*/
public static void main(String[] args) {
int[] num={1,2,3,4,5,6,7,8,9,10};
Map map=new HashMap();
while(true){
int j=(int)(0+Math.random()*(9+1-1));
if(map.size()>3){
break;
}
map.put(j, j);
}
Set set=map.keySet();
Iterator it=set.iterator();
while(it.hasNext()){
System.out.println("随机元素是>>>:"+num[(Integer)map.get(it.next())]);
}

}

}
相似回答