php 百分比机会

标签 php probability strategy-pattern

这实际上是一个方法问题,但我在 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% 会阅读论文),因为该迭代的“值(value)”计算为0 到 1 之间的 float 。这种方式改变了需要记录百分比的方式。

是否有任何方法可以将值的同一性保留为应该选择它们的真实概率而不是范围?它肯定会使代码更可配置,因为我必须使这些值可调。如果我太含糊,请告诉我。

最佳答案

我会这样做:

$arr = array (
    'walk the dog'    =>  array('min' =>  0, 'max' =>  25),
    'read the paper'  =>  array('min' => 25, 'max' =>  50),
    'drink coffee'    =>  array('min' =>  0, 'max' =>   0),
    'listen to music' =>  array('min' => 50, 'max' => 100),
);

$rnd = rand(1,100);
foreach($arr as $k =>$v) {
    if ($rnd > $v['min'] && $rnd <= $v['max']) {
        echo $k,"\n";
    }
}

关于php 百分比机会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8806006/

相关文章:

R:预测最高结果的概率

R 错误 : Error in `row.names<-.data.frame` (`*tmp*` , 值 = 值)

c# - 在策略模式中,处理共享行为的最佳方式是什么?

php - 表更新时 jQuery 更新 div

php - 散列 "remember me"cookie token 的最佳方法

python - MCMC 使用 Python 的司仪对麦克斯韦曲线进行采样

haskell - Haskell 中的 "Strategy Pattern"

java - Guice - 如何提供一个 API,支持灵活的可插拔策略实现及其自己的绑定(bind)?

php - 如何有效地查找具有类似 WordPress 的 URL 信息的帖子

php - php导出时设置格式为文本