PHP 配列がシャッフルされた後、確率によって要素の出現順序を制御するにはどうすればよいですか?
確率に基づいて配列要素の出現順序を制御する PHP のメソッド: 配列の順序を乱すには: shuffle() 関数を使用します。確率の割り当て: array_map() を使用して、各要素に確率 (0 ~ 1) を割り当てます。重み付き配列のソート: 配列を確率の降順にソートします (確率が高い要素が最初)。要素の抽出: 並べ替えられた配列から要素を順番に抽出します。つまり、確率制御された順序で配列をスクランブルします。
PHP で確率制御を使用して配列要素の出現順序を混乱させる
配列内の要素の順序を乱すことは、多くの開発シナリオに共通する問題 ランダムな抽選、ゲームメカニズムなどの一般的な要件。配列をシャッフルした後、確率に従って要素の出現順序を制御する必要がある場合、PHP には適切な関数とメソッドが用意されています。
準備
まず、スクランブルする要素を含む配列を準備します。例:
$array = [1, 2, 3, 4, 5];
shuffle()
関数を使用して配列をシャッフルします
shuffle()
この関数は次のことができます。配列の要素の順序をシャッフルします。
shuffle($array);
確率を使用して要素が表示される順序を制御します
array_map()
メソッドを使用して配列要素を走査し、確率を割り当てますそれぞれの要素に。確率値の範囲は 0 ~ 1 です。0 は要素が決して出現しないことを意味し、1 は要素が常に出現することを意味します。
$probabilities = [0.2, 0.3, 0.4, 0.5, 0.6]; $weightedArray = array_map(function ($element, $probability) { return [$element, $probability]; }, $array, $probabilities);
重み付き配列のソート
重み付き配列をソートすると、確率の高い要素が配列の先頭になります。
usort($weightedArray, function ($a, $b) { return $b[1] <=> $a[1]; });
要素の抽出
次に、ソートされた重み付き配列から要素を順番に抽出し、確率制御された順序でスクランブル配列を取得します。
$reorderedArray = []; foreach ($weightedArray as $element) { $reorderedArray[] = $element[0]; }
実際的なケース
5 つの項目を含む配列から 3 つの項目をランダムに選択する必要があるゲームがあるとします。各アイテムの出現確率は次のとおりです:
- アイテム 1: 20%
- アイテム 2: 30%
- アイテム 3: 40%
- 項目 4: 50%
- 項目 5: 60%
上記の手順に従って、次のコードを実装できます:
$items = ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5']; $probabilities = [0.2, 0.3, 0.4, 0.5, 0.6]; shuffle($items); $weightedItems = array_map(function ($item, $probability) { return [$item, $probability]; }, $items, $probabilities); usort($weightedItems, function ($a, $b) { return $b[1] <=> $a[1]; }); $drawnItems = []; for ($i = 0; $i < 3; $i++) { $drawnItems[] = $weightedItems[$i][0]; } print_r($drawnItems);
上記のコードとコントロールを実行します。確率に応じた出力 3 つのアイテムが順番に描画されます。
以上がPHP 配列がシャッフルされた後、確率によって要素の出現順序を制御するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
