Pythonでリストをランダム化する方法

リストをランダムな順序に並べるのは珍しい作業のように思えるかもしれませんが、多くの企業にとって非常に便利です。たとえば、リードを営業担当者にランダムに割り当てたり、仕事を従業員に割り当てたり、顧客のために抽選を行ったりすることができます。理由が何であれ、人気のあるプログラミング言語Pythonを使用して、要素のリストの順序をランダム化できます。

金銭を賭けた抽選や暗号化など、機密性の高い目的で乱数リストまたは乱数を生成する場合は、高品質の乱数ジェネレーターを使用していることを確認する必要があります。

Pythonでリストをシャッフルする

Pythonを使用すると、わずか数行のコードでリストランダマイザーツールを構築できます。Pythonは、商用と個人の両方で無料で使用でき、Microsoft Windows、macOS、Linux、その他のUnixスタイルのシステムを含むすべての最新のオペレーティングシステムで利用できます。

広く使用されているプログラミング言語の2つのバージョンであるPython2Python3には、リストまたは別のデータシーケンスをランダム化できるshuffleと呼ばれる関数が含まれています。シャッフルを使用するには、プログラムの上部近くにimport random行を追加して、Pythonランダムパッケージをインポートします。

次に、xという名前のリストがある場合は、random.shuffle(x)を呼び出して、ランダムシャッフル関数にランダムな方法でリストを並べ替えさせることができます。

シャッフル機能が既存のリストを置き換えることに注意してください。リストのコピーを元の順序で保持する場合は、シャッフルする前にリストのコピーを作成してください。Pythonコピーパッケージをインポートし、そのコピーメソッドを使用してインポートできます。使用Y = copy.copy(x)がリストのコピーを作成するためにX及び割当変数Yを、それを参照するためには。y = xと書くと、変数yxと同じリストを指すように割り当てられ、新しいコピーは作成されないことに注意してください。

ランダムな要素をつかむ

Pythonのリストからランダムな要素のみを取得したい場合は、ランダムパッケージを使用してこれを行うこともできます。コードの先頭近くにimportrandomを含めて、ランダムパッケージをインポートします。

単一の要素、ユース選択するにrandom.choice(x)はxがリストの名前です。この関数は、リストxからランダムに選択された単一の要素を返します。random.choiceを複数回呼び出すと、呼び出しの合間にリストから削除しない限り、リストの同じ要素を複数回取得する可能性があることに注意してください。

同じ要素を2回含まない複数の要素のセットを取得する場合は、random.sample(x、k)を使用します。ここで、xはリスト、kは必要な要素の数です。リストに繰り返される要素が含まれている場合、それらはランダム化されたサンプルで繰り返される可能性があります。

乱数ジェネレーターのリスク

すべての乱数ジェネレーターが同じように作成されるわけではありません。 Pythonのドキュメントでは、Pythonに組み込まれている乱数ジェネレーターは暗号化の目的には適していないことを警告しています。この場合、サードパーティによる復号化のリスクがほとんどないデータを暗号化するために乱数ジェネレーターを作成するには、最小限のレベルの実際のランダム性が必要です。ラッフルの抽選のように、リストが本当にランダムで予測できないことがビジネスにとって重要な場合は、適切な乱数ジェネレーターを使用することが重要です。

Pythonランダムモジュールの一部のサブクラスは、ランダム性のレベルを高めます。最新のオペレーティングシステムでは、暗号化に使用できる品質のランダムデータを提供するようにオペレーティングシステムに要求できます。Pythonを介して、osモジュールの関数os.urandomを使用してこのランダムデータにアクセスするか、random.SystemRandomを呼び出して、オペレーティングシステムのランダムデータを使用してランダムモジュールと同等の乱数ジェネレーターを生成できます。

これをシャッフルで使用するには、r = random.SystemRandom()と入力して乱数ジェネレーターを生成し、リストxでr.shuffle(x)を呼び出します。選択サンプルなどの他の関数も、SystemRandomジェネレーターで使用できます。

オペレーティングシステムのドキュメントを確認して、乱数ジェネレーターがどのように機能するか、およびニーズに適しているかどうかを理解してください。場合によっては、外部ハードウェアデバイスを使用して乱数を生成するようにオペレーティングシステムを構成できる場合があります。