假如我有A组 和 B组两个小组,A小组和B小组下面有若干个小组成员(每个小组的成员人数是可以确定的)
假设A组的分配率是百分之五十, B组的是百分之一百,
进来一群人,根据小组的分配率,分别分配给A B两组里面的小组成员,
但是进来的这群人的数量数不确定的,请问我怎么能保证,根据A和B两组的分配率来分配呢
请教下思路,谢谢
假设A组的分配率是百分之五十, B组的是百分之一百,
进来一群人,根据小组的分配率,分别分配给A B两组里面的小组成员,
但是进来的这群人的数量数不确定的,请问我怎么能保证,根据A和B两组的分配率来分配呢
请教下思路,谢谢
就是每 3 个中:2 个给 B, 1 个给 A
for($i=0; $i<100000; $i++) {
$n =get_rand(array('A'=>50, 'B'=>100));
@$r[$n]++;
}
print_r($r);function get_rand($proArr) {
$proSum = array_sum($proArr);
$randNum = mt_rand(1, $proSum);
foreach($proArr as $key => $proCur) {
$proSum -= $proCur;
if($randNum > $proSum) {
return $key;
}
}
}Array
(
[B] => 66627
[A] => 33373
)
$weight=array('A'=>50,'B'=>100); // 比重
$num = 100; // 人数
$result = get_rand($num, $weight);
print_r($result);function get_rand($num, $weight){
$result = array();
$total = array_sum($weight);
$i=0;
foreach($weight as $k=>$v){
if($i<count($weight)-1){
$result[$k] = (int)($num * $v/$total);
}else{
$result[$k] = $num - array_sum($result);
}
$i++;
}
return $result;
}
Array
(
[A] => 33
[B] => 67
)