Php 事件发生率

Php 事件发生率,php,Php,我在数组中有12项,如下所示: $item[1] = array('pseudo' => 'Item1', 'name' => 'apple', 'rarity' => '1', 'id' => '1' ); $item[2] = array('pseudo' => 'Item2', 'name' => 'banana', 'rarity' => '30', 'id' => '8' ); $item[3] = array('pseudo' =>

我在数组中有12项,如下所示:

$item[1] = array('pseudo' => 'Item1', 'name' => 'apple', 'rarity' => '1', 'id' => '1' );
$item[2] = array('pseudo' => 'Item2', 'name' => 'banana', 'rarity' => '30', 'id' => '8' );
$item[3] = array('pseudo' => 'Item3', 'name' => 'cherry', 'rarity' => '23', 'id' => '12' );
$item[4] = array('pseudo' => 'Item4', 'name' => 'pear', 'rarity' => '27', 'id' => '18' );
$item[5] = array('pseudo' => 'Item5', 'name' => 'watermelon', 'rarity' => '70', 'id' => '14' );
$item[6] = array('pseudo' => 'Item6', 'name' => 'orange', 'rarity' => '100', 'id' => '17' );

我需要的是随机打印6个项目中的1个,但受其稀有性的影响,所以越稀有,出现的次数就越少,稀有性从1到100。如何使用php实现这一点?

您可以根据每个项键的稀有程度向数组添加x个副本。例如:

$pool = array();

foreach ($items as $key => $value) {

    // Subtract the items rarity from 101,
    // generating 100 occurences for the most common
    // and 1 occurence for the most rare
    $occurrences = 101 - $value['rarity'];
    for ($i = 0; $i < $occurrences; $i++) { 

        // Add the items key $occurrences times
        array_push($pool, $key);
    }
}

$weighed_item = $items[array_rand($pool)];
$pool=array();
foreach($key=>$value的项目){
//从101中减去稀有物品,
//为最常见的事件生成100个事件
//其中1例为最罕见的
$occurrents=101-$value['rarity'];
对于($i=0;$i<$occurrents;$i++){
//添加项键$次
阵列推送($pool,$key);
}
}
$weighted_item=$items[array_rand($pool)];

那么它就不再是随机的了,是吗?谢谢你的评论让我发笑^^