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數位生活區 即時熱門文章