Python
 Computer >> コンピューター >  >> プログラミング >> Python

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'

  1. Pythonでrandom.seed()を使用するのはなぜですか?

    ランダムモジュールのseed()メソッドは、乱数ジェネレーターを初期化します。 random.seed(a,b) aが省略されているか、Noneの場合、現在のシステム時刻が使用されます。ランダム性ソースがオペレーティングシステムによって提供される場合、システム時間の代わりにそれらが使用されます aがintの場合、直接使用されます。 バージョン2(デフォルト)では、str、bytes、またはbytearrayオブジェクトがintに変換され、そのすべてのビットが使用されます。 バージョン1(古いバージョンのPythonからランダムシーケンスを再現するために提供)では、strとbytesのア

  2. Rubyでの乱数の生成

    乱数は、ゲーム、暗号化、建物のシミュレーションなど、さまざまな目的に役立ちます。技術的には、コンピューターは純粋に計算によって乱数を生成することはできません。決定論的なデバイスで真に乱数を生成することは基本的に不可能です。期待できる最善の方法は、疑似乱数です。これは、ランダムに生成されたかのように見える一連の数値です。 この記事では、Rubyで乱数を生成するさまざまな方法を見ていきます。 Kernel#randを使用した乱数の生成 まず、randを使用して乱数を生成しましょう。 方法。メソッドが引数なしで呼び出されると、0.0以上1.0未満のfloatが返されます。 rand() >