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