一个简单的php随机概率出现算法

用到了 .随手写下了.

不适用于大条数 . 随机候选值超过10,000个 明显效率下降

<?php

 

//id 随机数据 可以随便写.   weight 出现权重 必须是整数

$array = array (
array (‘id’ => 1 , ‘weight’ => 1),
array (‘id’ => 2 , ‘weight’ => 3),
array (‘id’ => 3 , ‘weight’ => 5),
);

function GW($data , $weight = ‘weight’){

foreach ( $data as $val ) {

$sumWeight += $val[$weight];

}

$randWeight = rand ( 1, $sumWeight) ;

foreach ( $data as $key => $val) {

$randWeight -= $val[$weight];

if ( $randWeight < 1 ){

return $val;

}

}

}

var_dump ( GW($array) );