PythonでランダムIDを生成する
プロジェクトでサンプルデータの乱数を生成するために使用します。これは、後でテスト、空の列の入力、またはその他の多くの目的に使用できます。重要なのは、ランダムデータを生成する必要があることです。 Pythonでは、ランダムデータを生成する方法が多数あります。この記事では、それらのいくつかをここで説明します-
Python random()モジュール
重要なライブラリの1つである、Pythonに付属しているものはランダムであり、コード全体で使用します。
このモジュールをコードで使用するには、インポートするだけで済みます。これで、使用する準備が整いました。
import random
使い方を見てみましょう-
import random print("What i will get, no idea as i'm using random.random()") print(random.random())
出力
What i will get, no idea as i'm using random.random() 0.5306626723173611
2回目は、同じプログラムを実行しようとすると、異なる出力が得られます-
What i will get, no idea as i'm using random.random() 0.5504289430397661
ランダムモジュールのいくつかのポイント:
- random()はランダムモジュールの基本関数です
- ランダムモジュールのほとんどすべての関数はrandom()関数を使用します。
- Random()関数は、[0.0から1.0)の間の任意の数値を生成します。
Pythonで乱数を生成する
以下の2つの関数を使用して、ランダムな整数を生成しています-
- randint()
- randrange()
from random import randint, randrange print("Printing random integer ", randint(0, 20)) print("Printing random integer ", randrange(0, 20, 2))
出力
Printing random integer 15 Printing random integer 4
リストからランダムにアイテムを選択
会社名のリストがあり、そのリストからアイテム(会社名)を取得したいとします。これは、
によって達成できます。import random companies = ['RELIANCE', 'TCS', 'INFY', 'SBI', 'PNB','HDFC'] print('Randomly selecting company from a list: ', random.choice(companies))
出力
Randomly selecting company from a list: INFY
リストから複数のアイテムをランダムに選択する
上記の例を考えてみましょう。ただし、1つのアイテム(会社)の代わりに、リストからランダムに複数のアイテム(会社)を選択する場合は、random.sample()関数-
を使用してこれを実現できます。import random companies = ['RELIANCE', 'TCS', 'INFY', 'SBI', 'PNB','HDFC'] print('Randomly selecting 3 companies from a list: ', random.sample(companies,3))
出力
Randomly selecting 3 companies from a list: ['TCS', 'RELIANCE', 'INFY']
ただし、リスト内のアイテム数を超えるアイテムを選択しようとすると、ValueError-
が発生します。入力-
random.sample(companies,20)
出力-
ValueError: Sample larger than population or is negative
リストから複数のランダムなアイテムを選択する別の方法は、random.choices()です。
import random companies = ['RELIANCE', 'TCS', 'INFY', 'SBI', 'PNB','HDFC'] print('Randomly selecting 3 companies from a list: ', random.choices(companies,k=6))
出力
Randomly selecting 3 companies from a list: ['TCS', 'TCS', 'INFY', 'HDFC', 'INFY', 'TCS']
上記の出力からわかるように、random.choices()メソッドを使用すると、リストから重複するアイテムが取得される可能性があります。
Pythonの疑似乱数ジェネレーター
疑似乱数ジェネレータは、値に対して何らかの操作を実行することによって機能します。通常、この値はジェネレーターによって生成された以前の数値です。ただし、ジェネレータを初めて使用するときは、以前の値はありません。
import random print("Seed value 10: ") # Initialize seed value random.seed(10) for i in range(5): print(random.randint(1,100)) print() print("Seed Value 5: ") # this time we'll get different values random.seed(5) for i in range(5): print(random.randint(1,100)) print() print("Seed value: 10") # will get the same result, what we got initially random.seed(10) for i in range(5): print(random.randint(1,100))
出力
Seed value 10: 74 5 55 62 74 Seed Value 5: 80 33 95 46 89 Seed value: 10 74 5 55 62 74
上記の例からわかるように、シードが同じである場合、最初の前の値が生成されます。各シード値は、特定の乱数ジェネレーターに対して生成された値の固定シーケンスに対応します。
Pythonで暗号的に安全な乱数を生成する
Python3.xで暗号的に安全な乱数を生成できます。 Python 3.6以降を使用している場合は、新しいシークレットモジュールと以下の関数randを使用できます。指定された値より下の乱数が生成されます。
import secrets #generate 10 secure random numbers between 10 and 500 for x in range(0,10): secV =10+ secrets.randbelow(500) print(secV)
出力
464 406 184 293 399 332 495 292 118 134
Python 3.5以下の別の方法では、ランダムモジュールとSystemRandomクラスを使用して、暗号的に安全な乱数を生成できます。
import random randGen = random.SystemRandom() for x in range(0,10): secV = 10+ randGen.randint(0,499) print(secV)
出力
374 211 425 264 217 97 210 39 319 52
もう1つの方法は、ランダムおよびシークレット(データを保護するため)モジュールを使用することです。
import secrets import random secNum = random.SystemRandom().random() print("secure number is ", secNum) print("Secure byte token", secrets.token_bytes(16))
出力
secure number is 0.5205307353786663 Secure byte token b'\x05T>\xacsqn0\x08\xc4\xf4\x8aU\x13\x9f\xcf'
-
Pythonでrandom.seed()を使用するのはなぜですか?
ランダムモジュールのseed()メソッドは、乱数ジェネレーターを初期化します。 random.seed(a,b) aが省略されているか、Noneの場合、現在のシステム時刻が使用されます。ランダム性ソースがオペレーティングシステムによって提供される場合、システム時間の代わりにそれらが使用されます aがintの場合、直接使用されます。 バージョン2(デフォルト)では、str、bytes、またはbytearrayオブジェクトがintに変換され、そのすべてのビットが使用されます。 バージョン1(古いバージョンのPythonからランダムシーケンスを再現するために提供)では、strとbytesのア
-
Rubyでの乱数の生成
乱数は、ゲーム、暗号化、建物のシミュレーションなど、さまざまな目的に役立ちます。技術的には、コンピューターは純粋に計算によって乱数を生成することはできません。決定論的なデバイスで真に乱数を生成することは基本的に不可能です。期待できる最善の方法は、疑似乱数です。これは、ランダムに生成されたかのように見える一連の数値です。 この記事では、Rubyで乱数を生成するさまざまな方法を見ていきます。 Kernel#randを使用した乱数の生成 まず、randを使用して乱数を生成しましょう。 方法。メソッドが引数なしで呼び出されると、0.0以上1.0未満のfloatが返されます。 rand() >