这实际上更多是一个方法问题,但我会用PHP来呈现。
假设我们有一个四个百分比的列表,表示在迭代过程中发生某种事件的概率。
array=('walk the dog'=>.25,'read the paper'=>.25,'drink coffee'=>.0,'listen to music'=>.50)
(键只是测试 - 在实践中,这将用于应用不同方法于一个对象的策略模式,使用call_user_func()
)
在循环中,选择其中一种事件的最佳方法是通过随机调整选择考虑它们各自的权重(例如,对于这个特定的配置,会听很多音乐而不喝很多咖啡)
目前我有类似这样的代码:
for($i=1;$i<=3;$i++){
$rand = 1/rand(1,10);
//choose from the list
}
但这需要将百分比映射到值范围(50-100%变成听音乐,0-25%遛狗,25-50阅读报纸),因为该迭代的“值”被计算为0到1之间的浮点数。 这种改变了记录百分比的方式。
是否有任何方法可以保持值的身份,作为应该选择的真实概率,而不是范围? 这肯定会使代码更可配置,因为我必须让这些值可调整。 如果我表述得太模糊,请告诉我。