PHP は一意の乱数を効率的に生成します
ランダム配列を生成するPHPのカプセル化方法
/* * array unique_rand( int $min, int $max, int $num ) * 生成一定数量的不重复随机数 * $min 和 $max: 指定随机数的范围 * $num: 指定生成数量 */ function unique_rand($min, $max, $num) { //初始化变量为0 $count = 0; //建一个新数组 $return = array(); while ($count < $num) { //在一定范围内随机生成一个数放入数组中 $return[] = mt_rand($min, $max); //去除数组中的重复值用了“翻翻法”,就是用array_flip()把数组的key和value交换两次。这种做法比用 array_unique() 快得多。 $return = array_flip(array_flip($return)); //将数组的数量存入变量count中 $count = count($return); } //为数组赋予新的键名 shuffle($return); return $return; }
この方法は、毎回乱数を取得し、重複排除する前に配列に格納します...非効率...使いたくない
PHP は効率的です n の範囲で m 個の非繰り返し乱数を生成します (m<=n)
注: これは、書籍「Programming Pearls」にも記載されています。 m n 範囲を効率的に生成するには" (m<=n) 内の非繰り返し乱数"
このアルゴリズムは、乱数 (配列の添字) の位置を非常に巧妙に取得します。乱数自体を取得するのではなく、乱数を取得した後はそのたびに値の範囲から除外され、次回は残りの数値からのみ選択されます。乱数の選択は 1 回の走査で完了できます。非常に効率的です。
function rand_num($num='200'){ for($i=0;$i<$num;$i++){ $n[$i] = $i; } for($i=0;$i<$num;$i++){ $rand = mt_rand($i,$num-1); //数组 随机数交换下标 if($n[$i] == $i){ $n[$i] = $n[$rand]; $n[$rand] = $i; } } }
1. 最初のステップは、添字の順序で配列内の各数値に値を割り当て、$num 個の数値キー値の配列を取得することです。対応する順序で配置されます。
2.2 番目のステップ では、範囲 [i, $num-1] の乱数 $rand の取得を開始し、取得した乱数 $rand を現在の値として使用します。配列。位置キー i は添字値 $rand に対応し、配列内のキー $rand の添字に対応する値は i に置き換えられます。これは実際には配列キー値の相互交換です。意味は、生成された乱数を値の範囲 [i,$num-1] から除外し、次回は残りの数値 [i 1,num-1] から値を取得することです。
3.3 番目のステップ は、値の繰り返しを避けるために、変更されていないキーと値のペア、つまり元の配列が連続して配置されている位置に対してのみ交互の操作を実行します。 (キー == 値) 交互に操作を実行します。
4.終了。
以上がPHP は一意の乱数を効率的に生成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











RANDBETWEEN を使用して Excel で乱数を生成する方法 特定の範囲内の乱数を生成したい場合は、RANDBETWEEN 関数を使用すると手早く簡単に実行できます。これにより、選択した 2 つの値の間でランダムな整数を生成できます。 RANDBETWEEN を使用して Excel で乱数を生成する: 最初の乱数を表示するセルをクリックします。 =RANDBETWEEN(1,500) と入力し、「1」を生成する最小の乱数に置き換え、「500」を次の乱数に置き換えます。

Java 開発で乱数生成のパフォーマンスを最適化する方法 乱数は、コンピューター サイエンス、特に暗号化、シミュレーション、ゲームなどの分野で広く使用されています。 Java 開発では、さまざまなニーズを満たすために乱数を生成する必要があることがよくあります。ただし、乱数生成のパフォーマンスは開発者の懸念事項の 1 つであることがよくあります。この記事では、Java 開発における乱数生成のパフォーマンスを最適化する方法について説明します。 ThreadLocalRandom クラスは、ThreadLocalRandom クラスを使用して Java7 で導入されました。

Go 言語を使用して乱数を生成する Go 言語は、乱数を生成するための組み込みライブラリを多数提供する、最新の簡潔かつ効率的なプログラミング言語です。その中で、crypto/rand パッケージは、安全な乱数を生成するための一連の関数を提供します。この記事では、crypto/rand パッケージの Read 関数を使用して乱数を生成します。まず、crypto/rand パッケージをインポートし、乱数を保存するバイト配列を作成する必要があります。コード例は次のとおりです。

PHP 配列を使用して乱数と検証コードを生成する方法 乱数と検証コードは、Web サイトやアプリケーションの開発中に非常に一般的です。 PHP には、乱数と検証コードを生成するためのさまざまな方法が用意されています。この記事では、PHP 配列を使用して乱数と検証コードを生成する方法を、対応するコード例とともに紹介します。 1. 乱数を生成する PHP では、rand() 関数を使用して乱数を生成できます。 rand() 関数には、最小値と最大値の 2 つのパラメータが必要です。サンプルコードは次のとおりです: $min=1;$max=

Java で Random.nextInt() メソッドを使用して乱数を生成するにはどうすればよいですか?乱数はコンピューター サイエンスで広く使用されており、パスワード、ゲームのランダム イベント、データ サイエンスのランダム サンプリングなどの生成に使用できます。 Java には乱数を生成する Random クラスが用意されており、nextInt() メソッドを使用してランダムな整数を生成できます。以下では、Random.nextInt() メソッドを使用して乱数を生成する方法と、具体的なコード例を紹介します。まず必要なのは、

Golang で重複した乱数の生成を回避する方法: 新しい乱数ジェネレーター rand.New(rand.Source) を作成します。 rand.NewSource(time.Now().UnixNano()) をエントロピー ソースとして使用します。 rand.Intn(n) を使用してランダムな整数を生成します。

乱数を生成する NumPy の方法と応用を探る はじめに: 乱数は、シミュレーション実験、データ生成、特徴選択など、コンピューター サイエンスや統計で広く使用されています。 Python の NumPy (NumericalPython) ライブラリは、乱数を生成するための多くの関数を提供する強力な数値計算ライブラリです。この記事では、NumPy での乱数生成方法を検討し、具体的なコード例を示します。 1. NumPyが提供するNumPyの乱数生成機能

この記事では、C プログラミングにおける文字列操作に関連する興味深い実用的な問題を掘り下げていきます。 C で「ランダム パスワード ジェネレーター」を構築します。この質問により、文字列操作の理解が深まるだけでなく、C 標準ライブラリの知識も深まります。問題文のタスクは、指定された長さのランダムなパスワードを生成するプログラムを構築することです。パスワードには、大文字、小文字、数字、特殊文字を含める必要があります。 C ソリューションのアプローチ この問題を解決するには、C 標準ライブラリの力を活用します。 rand() 関数を使用して、指定された範囲内の乱数を生成します。パスワードに含まれる可能性のあるすべての文字を含む文字列を作成し、パスワードの各文字に対して、この文字列からランダムに 1 文字を選択します。
