Re: [問題] 亂數產生一個矩陣
當然是包物件阿... 寫 Java 怎麼可以不包物件... \囧/
(路人:這... 不相關吧? ==.==)
我的做法跟上面幾位大大不一樣...
首先,要有幾個 Utility,裡頭有一些 method 長得像這樣
public static double[] aDistributeMethod(int amount){
double[] result = new double[amount];
for(int i=0; i<amount; i++){
result[i]=aProbProduct();
}
return result;
}
/*
* 假設 distribution 為 {1, 2, 1}
* 則 value 傳入 0~1 時候回傳 0,傳入 1.x~3 時回傳 1,3.x~ 回傳 2
*/
public static int valueLocationAt(double[] distribution, double value){
double sum = 0;
for(int i=0; i<distribution.length; i++){
sum+=distribution[i];
if(value<=sum){
return i;
}
}
return distribution.length;
}
aProbProduct() 就看你要怎麼弄
要 poisson 還是什麼鬼的,請隨意
寫一個我喜歡用 Seed 作結尾的物件,這裡就叫做 FooSeed 吧
public class FooSeed {
private final String pool[];
private double distribution[];
private double totalProbability;
public FooSeed(int totalAmount){
pool = new String[totalAmount];
distribution = Distribution.poisson(totalAmount);
for(int i=0; i<pool.length; i++){
pool[i] = "\\囧/";
}
totalProbability = Calculate.sumOfArray(distribution);
}
public double getTotalProbability(){
return totalProbability;
}
public String pickFoo(){
double value = Distribution.random(0.0, totalProbability);
int index = Distribution.valueLocationAt(distribution, value);
return pool[index];
}
}
那麼,只要 new FooSeed
然後對 FooSeed 一直 pickFoo 就好
這是我的做法,還請各方高手多多指點 [擺茶點]
=====
最近在寫的案子... T__T
====
ㄟ對,qrttOne,再來篇比較的文章吧
我好想 m 阿.... \囧/
--
侃侃長論鮮窒礙 網站:http://www.psmonkey.idv.tw
眾目睽睽無心顫 個人版:telnet://legend.twbbs.org
煢居少聊常人事
殺頭容易告白難 歡迎參觀 Java 版(@ptt.cc)精華區 \囧/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.204.16.17
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章