作者mortleo (mort)
看板C_Sharp
标题Re: [问题] 请问这Algorithm
时间Wed Mar 16 16:48:03 2011
probabilities 为一个 double array。里面包含所有事件的个别机率
个别机率必须大於等於0 。机率总和等於 1
Random() 为一个均匀机率的乱数产生器
radnom.NextDouble() 应该设定最小为 0 ,最大为 1 来产生一个 double 乱数
依据此乱数来检查他在 probabilities 的机率分布中,落点在哪一个事件中
回传被触发的事件 index (若有 n 个事件,回传值会是 0,1,2 ..., n-1)
※ 引述《kingofsdtw (不能闲下来!!)》之铭言:
: 从一本书中提到的
: 如果事件的概率存在一个阵列里,可以用以下方法产生一个随机事件
: Ramdom random = new Random();
: int NextEvevt(double[] probabilities)
: {
: double p = random.NextDouble();
: for ( int i = 0 ; i< probailities.Lebgth -1; i++)
: {
: if(p< probabilities[i])
: return i;
: p-=probabilites[i];
: }
: return probabilities[probabilities.Length-1];
: }
: 有点无头...感觉上是书少写了啥吗0.0?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.250.207.196
1F:推 kingofsdtw:感谢~学习中 ~"~ 03/16 17:20