在百分比上调用随机函数?

时间:2012-12-15 10:42:15

标签: php random

我无法弄清楚这一点。

我需要一个解决方案来调用随机函数的百分比。

实施例。脚本调用subscriptions()的可能性为10%,系统调用函数“specialitems()”的概率为3%。

我被困在这里,所以我希望有人可以帮我解决这个问题。

<?php
   class RandomGifts {
   public $chances = '';

   public function __construct($user) {
          $this->user = $user;

          //Find percent for each function
          $this->chances = array( 
                 'subscriptions' => 10, // 10%
                 'specialitems'  => 3,  //  5%
                 'normalitems'   => 30, // 40%
                 'fuser'         => 50, // 70%
                 'giftcards'     => 7,  //  7%
          );

 //This should call the function which has been calculated.
 self::callFunction(?);

 }

   public function subscriptions(){}
   public function specialitems(){}
   public function normalitems(){}
   public function fuser(){}
   public function giftcards(){}

}
?>

2 个答案:

答案 0 :(得分:4)

试试这个:

$a = rand(1, 100);
$total = 0;
$f = '';
foreach($this->chances as $function => $percent) {
    $total += $percent;
    if($a <= $total) {
        $f = $function;
        break;
    }
}
if(!empty($f))
    $this->$f();

百分比不应该添加到100以上的任何值。如果总和低于100,那么剩余的百分比是“什么也不做”。

答案 1 :(得分:-1)

然后用你的类和$ var名称来调用函数。

$this->$var();