作者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