作者PsMonkey (痞子軍團團長)
看板java
標題Re: [問題] 亂數產生一個矩陣
時間Thu Mar 9 13:55:10 2006
當然是包物件阿... 寫 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.ran
dom(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