Pythonで疑似乱数を生成する
多くのコンピュータアプリケーションでは、乱数を生成する必要があります。ただし、それらのいずれも真に乱数を生成しません。 Pythonは、他のプログラミング手法と同様に、疑似ランダムジェネレーターを使用します。 Pythonのランダム生成は、53ビットの精度のフロートを生成するメルセンヌツイスターアルゴリズムに基づいています。この手法は高速でスレッドセーフですが、暗号化の目的には適していません。
Pythonの標準ライブラリには、ランダム化を処理するためのさまざまな関数を定義するランダムモジュールが含まれています。
random.seed() −この関数は、乱数ジェネレーターを初期化します。ランダムモジュールがインポートされると、ジェネレータはシステム時間の助けを借りて初期化されます。ジェネレータを再シードするには、int、str、byte、またはbytearrayオブジェクトを使用します。
random.getstate() −この関数とsetstate()関数は、同じランダムデータを何度も再現するのに役立ちます。 getstate()関数は、乱数ジェネレーターの内部状態を返します。
random.setstate() −この関数は、ジェネレーターの内部状態を復元します。
次の関数はランダムな整数の生成を処理します-
random.randrange() −この関数は、指定された範囲の間にランダムな整数を生成します。 3つのパラメータを取ることができます。
random.randrange(start, stop, step)
startおよびstepパラメーターはオプションです。デフォルト値はそれぞれ0と1です。ステップは、連続する番号間の間隔を決定します。
>>> random.randrange(10) 5 >>> random.randrange(10, 20) 17 >>> random.randrange(100, 200, 2) 188
(注:上記のステートメントの出力、およびこの記事の残りのステートメントは、ランダムに生成されたものと同じでない場合があることに注意してください)
random.randint() −この関数は、2つのパラメーター間にランダムな整数を生成します。これは、stepパラメーターのないrandrange()関数に似ています。開始パラメーターは必須です。
>>> random.randint(1,10) 6 >>> random.randint(100, 200) 134
次の関数は浮動小数点乱数を処理します。
random.random() −この関数は、0.0から1.0の間の浮動小数点数をランダムに生成します
>>> random.random() 0.668544544081956
random.uniform() −この関数は、2つのパラメーター間の浮動小数点乱数を返します。
>>> random.uniform(0.5,1.5) 1.2760281470664903 >>> random.uniform(1,10) 7.336985794193224 >>> random.uniform(10,5) 7.817794757786727
次の関数は、シーケンスオブジェクトに作用します。文字列、リスト、またはタプル。
random.choice() −この関数は、シーケンスからランダムな要素を選択します。シーケンスが空の場合、IndexErrorがスローされます。
>>> random.choice("Tutorialspoint") 'o' >>> random.choice(range(10)) 2 >>> random.choice([15,31,6,29,55, 5]) 55 >>> random.choice((15,31,6,29,25, 55)) 15
random.choices() −この関数は、リストからランダムに複数の要素を選択します。この関数の最初のパラメーターはシーケンスであり、2番目のパラメーターは選択の数です。
>>> name = "TutorialsPoint" >>> random.choices(name, k = 2) ['T', 'o']
random.shuffle() −この関数は、要素を可変シーケンスで並べ替え、ランダムに配置します。
>>> num = [10,20,30,40,50] >>> random.shuffle(num) >>> num [50, 20, 40, 30, 10]
random.sample() −この関数は不変のシーケンスで機能します。シーケンスからランダムに選択されたアイテムのリストを返し、そのまま残します。
>>> name = "TutorialsPoint" >>> nm = random.sample(name, k = 2) >>> name, nm ('TutorialsPoint', ['i', 'a'])>
-
Pythonのissubset()関数
この記事では、Python標準ライブラリで利用可能なissubset()関数の実装と使用法について学習します。 issubset()メソッドは、セットのすべての要素が別のセットに存在する場合(引数として渡される場合)はブール値のTrueを返し、それ以外の場合はブール値のFalseを返します。 下の図では、BはAのサブセットです。AとBが同一のセットである場合、AはBの適切なサブセットであることを意味します。これは、両方のセットに同じ要素が含まれていることを意味します。 構文 <set 1>.issubset(<set 2>) 戻り値 boolean True/
-
Pythonはどのように乱数を生成しますか?
Pythonの標準配布には、乱数生成機能を備えたランダムモジュールがあります。基本的なrandom()関数は、0から1までのランダムな浮動小数点数を返します >>> import random >>> random.random() 0.5204702770265925 同じモジュールから、連続する範囲の間の乱数を返すrandrange()関数があります。 >>> random.randrange(0,10) 4 リストまたはタプルからアイテムをランダムに選択するchoice()関数もあります >>> random.ch