Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 임의의 ID 생성

<시간/>

우리는 프로젝트에서 샘플 데이터에 대한 난수를 생성하는 데 사용합니다. 나중에 테스트에 사용할 수 있고 빈 열을 채우거나 다른 많은 목적으로 사용할 수 있습니다. 중요한 것은 무작위 데이터를 생성해야 한다는 것입니다. 파이썬에는 무작위 데이터를 생성하는 다양한 방법이 있으며 우리는 이 기사에서 그 중 일부를 탐색할 것입니다 -

Python random() 모듈

중요한 라이브러리 중 하나인 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

두 번째로 동일한 프로그램을 실행하려고 하면 다른 결과를 얻을 수 있습니다. −

What i will get, no idea as i'm using random.random()
0.5504289430397661

임의 모듈에 대한 몇 가지 점:

  • random()은 random 모듈의 기본 기능입니다.
  • random 모듈의 거의 모든 함수는 random() 함수를 사용합니다.
  • Random() 함수는 [0.0에서 1.0) 사이의 숫자를 생성합니다.

Python에서 임의의 정수 생성

임의의 정수를 생성하는 데 사용하는 두 함수 아래 -

  • 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

목록에서 무작위로 여러 항목 선택

위의 예를 고려하지만 하나의 항목(회사) 대신 목록에서 무작위로 여러 항목(회사)을 선택하려는 경우 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))
에서 i에 대해 처음에 random.seed(10)를 얻은 것

출력

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에서 암호로 안전한 난수 생성

파이썬 3.x에서 암호학적으로 안전한 난수를 생성할 수 있습니다. python 3.6 이상이면 새로운 secrets 모듈과 아래 함수 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 이하의 또 다른 방법은 random 모듈과 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

또 다른 방법은 random 및 secrets(데이터 보안을 위해) 모듈을 사용하는 것입니다.

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'