加权随机数

function MyRand( array $arr , $number ){     $sum = 0;     # 处理数组的取值范围     foreach( $arr as $key => $value ){         $sum += $value;         $new[] = $sum;     }     $return = [];     # 循环指定次数     while( $number -- ){         $rand mt_rand( 0 , $sum - 1 );         # 查找随机数相邻最近的key值         foreach ( $new  as $key1 => $value2 )  {             if( $rand < $value2 ){                 $return[] = $key1;                 break;             }         }     }     return $return; } #关于随机权重的准确性可以多生成几组随机数、计算下出现的概率 echo '<pre/>'; $new = MyRand( [ 20 , 50 , 30] , 100000 ); //print_r( $new ); $test_result = array_count_values( $new ); print_r( $test_result ); exit;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值