Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การสร้าง Id แบบสุ่มใน Python


เราใช้เพื่อสร้างตัวเลขสุ่มในโครงการของเราสำหรับข้อมูลตัวอย่าง ซึ่งภายหลังสามารถใช้สำหรับการทดสอบ เติมคอลัมน์ว่าง หรือเพื่อวัตถุประสงค์อื่น ๆ มากมาย สิ่งสำคัญคือเราจำเป็นต้องสร้างข้อมูลแบบสุ่ม ใน python มีหลายวิธีในการสร้างข้อมูลแบบสุ่ม และเราจะสำรวจวิธีเหล่านี้ในบทความนี้ −

โมดูล Python สุ่ม ()

หนึ่งในไลบรารี่ที่สำคัญ ที่มากับ 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() จะสร้างตัวเลขใดๆ ระหว่าง [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))

ผลลัพธ์

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 module ใหม่และฟังก์ชั่น 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

อีกวิธีหนึ่งคือการใช้โมดูลสุ่มและความลับ (เพื่อรักษาความปลอดภัยข้อมูล)

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'