เราใช้เพื่อสร้างตัวเลขสุ่มในโครงการของเราสำหรับข้อมูลตัวอย่าง ซึ่งภายหลังสามารถใช้สำหรับการทดสอบ เติมคอลัมน์ว่าง หรือเพื่อวัตถุประสงค์อื่น ๆ มากมาย สิ่งสำคัญคือเราจำเป็นต้องสร้างข้อมูลแบบสุ่ม ใน 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'