Re: [问题] Android新手 随机取值的问题

楼主: LaPass (LaPass)   2015-11-18 23:18:49
你这个程式有一个架构上的问题
假设你的数据是“两个一组”
那你应该用个class把他包起来,像是
class Point{
Point(int x,int y){this.x=x;this.y=y;}
int x,y;
}
之类的,这个可以简化很多之后处理这个数据组的问题
第二个问题
是排列组合的问题,这排列组合其实不难,但是加上你的数据组的问题之后
等于是把两个简单的问题,变成一个复杂的问题
但如果妳把两个数据包成一个class之后
就可以用很简单的方式做出来
<T> <= 这是泛型
public static <T> List<T> getRand(List<T> t,int num){
//装答案用的List
ArrayList<T> ans=new ArrayList<>(num);
//取num个答案
for (int i=0;i<num;i++){
//乱数从列表中取一个
int key=(int)(Math.random()*t.size());
//从列表中移除选中的目标,并放到答案列表中
ans.add(t.remove(key));
}
return ans;
}
所以是这样用
//生成清单
ArrayList<Point> l=new ArrayList<>();
for (int i=0;i<10;i++){
l.add(new Point(i*2,i*2+1));
}
/随机取3个
List<Point> r=getRand(l,3);
//打印答案
for (Point p:r){
System.out.println("("+p.x+","+p.y+")");
}
※ 引述《gcobc12632 (Ted)》之铭言:
: 假设我有一组阵列
: int i[] = {0, 1, 2, 3, 4, 5, 6, 7};
: 且 01为一组、23为一组、45为一组…以此类推,目前总共四组(可能有变动
: 然后我要从这组阵列当中,随机取出 1~4 组数字
: 例1:随机取出 4 组,随机取出 01, 23, 45, 67
: 例2:随机取出 2 组,随机取出 23, 67
: 例3:随机取出 3 组,随机取出 01, 23, 67
: 大概是这样…
: 这该怎么写呢?卡在这卡好久了
: -
: 原本我的写法是:
: private int random1 = 0; //奇数
: private int random2 = 0; //偶数
: do {
: random1 = Utils.getRandomNumber(1, i.length);
: random2 = Utils.getRandomNumber(0, i.length);
: if (random1 % 2 == 0) {
: random1

Links booklink

Contact Us: admin [ a t ] ucptt.com