ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して n 個の数値を生成し、その合計を固定値にする方法

PHP を使用して n 個の数値を生成し、その合計を固定値にする方法

WBOY
WBOYオリジナル
2016-06-13 13:15:131115ブラウズ

PHP を使用して n 個の数値を生成し、その合計を定数値にする方法は?
すみません、英雄の皆さん、n 個の数値を生成し、その合計を定数値にする方法はありますか?

実現したい関数は次のとおりです:
たとえば、10 個のサイトがあり、それぞれにランダムにパーセンテージを割り当て、合計を 100% にします。これは、いくつかの方法から最適な割り当てを選択したいためです。この計画には間違いなくループが含まれるため、少し混乱しているので、事前にアドバイスをいただければ幸いです。

-----解決策--------------------------------
Baidu: 整数の除算。
------解決策---------
1 ~ 100 の間で、n-1 個の乱数を生成します、n+1 個の数値が並べ替えられ、隣接する数値の差がパーセントになります。
------解決策------------------
php code

/**
+-------------------------------------------------
* 機能: ランダムに 10 パーセントを生成します。合計は 1
* @auathor Beatyou385981202
* @time 2012-6-15
+---------------------- -- --------
*/

print_r(percentage_num());

functionpercentage_num()
{
// ランダムに生成保存場所の割合
$arr_num = array();

//最初の値の範囲を初期化します
$num = 100;

for($i=1; $i {
$arr_num[$i] =random_num($num);
$num = $num - $arr_num[$i];
}

//最後のパーセンテージについては、100 から最初の 5 つの合計を減算します。
for($i=1;$i {
$add_num += $arr_num[ $i];
}

$arr_num[10] = 100 - $add_num;

return $arr_num;
}

関数random_num($num )
{
return rand(1,$num/2.5);
//より理想的な結果を得るために、ここではランダム生成の範囲が縮小されています
}


それが役に立てば幸いです(笑)
------解決策---------
これは、数値をランダムに生成するという単純な PHP の問題ではありません。再帰的検索アルゴリズムが含まれます

私は C 言語とデータ構造とアルゴリズムのフォーラムに所属しており、アルゴリズムについては少し知っています

まず、投稿者の問題を分析させてください。最適なものは何ですか?

しかし、元の投稿者の最適なものは間違いなく以下の状態空間にあります。これらの 100 の数値は、

100 個の認識されたキューとして想像できます。個人的に、そして 100 人目の人の意見では、間違いなく 99 個のギャップが存在します。

実際、これらの 99 個のギャップに 9 つのパーティションをランダムに配置すると、希望する結果が得られます

では、99 個から 9 個を選択する方法は何通りありますか?数値 C(99,9) は非常に大きいです

を計算できますが、すべての結果を出力するには時間がかかります。
------解決策---------

彼はステップ サイズとして 0.01 を望んでいます。 ....


ディスカッション

これは、ランダムに数値を生成する単純な PHP 問題ではありません。これには、再帰的検索アルゴリズムが含まれます

私は C 言語とデータ構造とアルゴリズムのフォーラム出身で、アルゴリズムについては少し知識があります

投稿者の問題を分析させてください まず第一に、投稿者は最適なものが何かを明確に説明していませんでした。値は

ですが、投稿者の最適な位置は以下の状態空間内にある必要があります。これらの 100 の数字は 100 の認識キューとして考えることができ、最初の人物と最初の人物の差となります。 100 人目は間違いなくそうです。 99 個のギャップがあります。

実際、9 つのパーティションをこれら 99 個にランダムに入れることができます...


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