Python:
การสร้างตัวเลขสุ่ม
วิธีทำ:
Python มีโมดูล random
ที่ช่วยในการสร้างตัวเลขสุ่มสำหรับการใช้งานที่หลากหลาย นี่คือวิธีเริ่มต้น:
การนำเข้าโมดูล
import random
การสร้างจำนวนเต็มสุ่ม ระหว่างตัวเลขสองตัวใดๆ
random_integer = random.randint(1, 10) print(random_integer)
ตัวอย่างผลลัพธ์:
7
การสร้างจุดทศนิยมสุ่ม ระหว่าง 0 และ 1
random_float = random.random() print(random_float)
ตัวอย่างผลลัพธ์:
0.436432634653
หากคุณต้องการจุดทศนิยมในช่วงที่แตกต่างกัน คูณค่าดังกล่าว:
random_float_range = random.random() * 5 # 0 ถึง 5 print(random_float_range)
ตัวอย่างผลลัพธ์:
3.182093745
การเลือกส่วนประกอบสุ่มจากรายการ
greetings = ['Hello', 'Hi', 'Hey', 'Hola', 'Bonjour'] print(random.choice(greetings))
ตัวอย่างผลลัพธ์:
Hola
การสับเปลี่ยนรายการ เหมาะสำหรับเกมไพ่หรือแอปพลิเคชันใดๆ ที่ต้องการการเรียงลำดับแบบสุ่ม
numbers = list(range(10)) random.shuffle(numbers) print(numbers)
ตัวอย่างผลลัพธ์:
[2, 5, 0, 4, 9, 8, 1, 7, 6, 3]
ลงลึก
โมดูล random
ใน Python ใช้เครื่องกำเนิดตัวเลขสุ่มแบบสุ่มเทียม (PRNG), โดยเฉพาะอัลกอริทึม Mersenne Twister, ซึ่งเหมาะสำหรับการใช้งานทั่วไปแต่ไม่เหมาะสำหรับงานด้านการเข้ารหัสเนื่องจากความสามารถในการทำนายได้หากมีการสังเกตผลลัพธ์มากพอ โมดูล secrets
, ที่เ introduced ใน Python 3.6, นำเสนอทางเลือกที่ดีกว่าสำหรับการสร้างตัวเลขสุ่มที่มีความแข็งแกร่งทางคริปโตกราฟิก, ซึ่งมีประโยชน์โดยเฉพาะในแอปพลิเคชั่นที่มีความละเอียดอ่อนด้านความปลอดภัย เช่น การสร้างโทเค็นสุ่มที่ปลอดภัยสำหรับลิงก์รีเซ็ตรหัสผ่าน:
import secrets
token = secrets.token_hex(16)
print(token)
ในอดีต, การสร้างตัวเลขสุ่มที่เป็นสุ่มอย่างแท้จริงถือเป็นความท้าทายในด้านการคอมพิวเตอร์, โดยมีวิธีเบื้องต้นที่พึ่งพาปรากฏการณ์ทางกายภาพหรือการป้อนค่าเมล็ดด้วยมือ การพัฒนาและการนำอัลกอริทึมเช่น Mersenne Twister (ที่ใช้เป็นการดีฟอลต์ในโมดูล random
ของ Python จนถึงอย่างน้อยการอัปเดตความรู้ล่าสุดของฉันในปี 2023) ได้ทำให้เกิดความก้าวหน้าอย่างมาก อย่างไรก็ตาม, การค้นหาอัลกอริทึมที่มีความปลอดภัยและมีประสิทธิภาพมากขึ้นได้นำไปสู่การรวมโมดูล secrets
สำหรับงานที่เกี่ยวข้องกับคริปโตกราฟี การวิวัฒนาการนี้สะท้อนให้เห็นถึงความสำคัญที่เพิ่มขึ้นของความปลอดภัยในการพัฒนาซอฟต์แวร์และความต้องการความสุ่มที่แข็งแกร่งยิ่งขึ้นในแอปพลิเคชั่นต่างๆ ตั้งแต่การเข้ารหัสไปจนถึงการสร้างโทเค็นที่ปลอดภัย