ホームページ  >  記事  >  バックエンド開発  >  人数に基づいてパーセンテージをランダムに割り当てることに関する質問

人数に基づいてパーセンテージをランダムに割り当てることに関する質問

WBOY
WBOYオリジナル
2016-06-23 13:50:131829ブラウズ

変数パラメータ $people に従って各人にランダムに割合を割り当てます。条件は、人数が 3
簡単な分布を書きましたが、最後の人が多くもらえる状況もあるでしょうし、実際の分布間隔は1 - 平均の割合なので、厳密な意味での「ランダムな平均分布」ではありませんいくつかのアイデアや提案をしていただき、ありがとうございます。

$people = 3;     //人数        $percent = 100;   //百分比        $average = floor($percent/$people);        $rand_array = array();        $count = 0;        for ($i=0; $i < $n; $i++) {            if($i == ($n - 1)){                $rand_array[$i] = 100 - $count;            }else{                $rand_array[$i] = rand(1,$average);                $count = $count + $rand_array[$i];             }        }        return $rand_array;


ディスカッションへの返信 (解決策)

これは良いかもしれません

$people = 3;    //人数$percent = 100; //百分比$res = array_fill(0, 3, floor($percent/$people)); //平均分配$d = 5; //容差foreach($res as &$v) $v += rand(-$d, $d);$res[rand(0, $people-1)] += $percent - array_sum($res); //随机将残差补入print_r($res);

投稿するのを忘れていました モデレーターに返信していただきありがとうございます。投稿します。みんなと共有するには:

public static function rand_bouns($person){		//百分比		$percent = 100;		$now_person = $person;		$bouns = array();		for($i=0;$i<=$person-1;$i++){			$bouns[$i] = self::get_bouns($now_person,$percent);			$percent = $percent - $bouns[$i];			$now_person = $now_person - 1;			$now_bouns += $bouns[$i];		}		return $bouns;			}public static function get_bouns($person,$percent){		if($person==1) return $percent;		$max = 30;		if($percent < $max)  $max = $percent;		$min = $percent-$max*($person-1) <= 0 ? 1 : $percent-$max*($person-1);		$max = $max-($person) <= 0 ? 1 : $max-($person);		return rand($min,$max);	}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。