【发布时间】:2012-01-10 15:43:08
【问题描述】:
这实际上是一个方法问题,但我在 php 中呈现它。
假设我们有一个列表,其中包含一个给定事件将在迭代中发生的四个百分比。
array=('walk the dog'=>.25,'read the paper'=>.25,'drink coffee'=>.0,'listen to music'=>.50)
(键只是测试 - 在实践中,这将用于一种策略模式,该策略模式使用 call_user_func() 将不同的方法应用于对象的机会)
在一个循环中,通过随机调整选择并考虑到它们各自的权重来选择其中一个事件的最佳方式是什么(IE,对于这种特定配置,将会听到很多音乐而不是喝了很多咖啡)
目前我有类似的东西:
for($i=1;$i<=3;$i++){
$rand = 1/rand(1,10);
//choose from the list
}
但这需要将百分比映射到值范围(50-100% 会听音乐,0-25% 会遛狗,25-50% 会看报纸),因为该迭代的“价值”计算为0 到 1 之间的浮点数。这种方式改变了需要记录百分比的方式。
是否有任何方法可以将值的同一性保留为应该选择它们的真实概率而不是范围?它肯定会使代码更可配置,因为我必须使这些值可调。如果我太含糊,请告诉我。
【问题讨论】:
-
顺便说一句,您的列表中有 4 项,而不是 3 项。
标签: php probability strategy-pattern