random --- สร้างตัวเลขสุ่ม¶
โมดูลนี้ใช้งาน pseudo-random number generator (PRNG) โดย PRNG เป็น Yasmarang-style LCG แบบ 32 บิต เมื่อ import ครั้งแรกจะดึง seed ขนาด 32 บิตจากแหล่งฮาร์ดแวร์เดียวกับที่ os.urandom() ใช้ และตัวเลขถัดไปทุกตัวจะเป็นฟังก์ชันที่กำหนดได้จาก seed นั้น
Warning
ผลลัพธ์ไม่มีความปลอดภัยเชิงการเข้ารหัส -- อัลกอริทึมสามารถทำนายได้จากลำดับผลลัพธ์สั้นๆ และ seed เริ่มต้นมีความ entropy เพียง 32 บิต สำหรับข้อมูลสำคัญด้านการเข้ารหัส เช่น session token, password salt หรือการใช้งานที่ต้องการความปลอดภัย ให้เรียก os.urandom() แทน
Note
สัญลักษณ์ต่อไปนี้ใช้สำหรับช่วง:
() คือวงเล็บช่วงเปิดที่ไม่รวมค่าขอบเขต ตัวอย่างเช่น (0, 1) หมายถึงมากกว่า 0 และน้อยกว่า 1 ในรูปแบบเซต: (0, 1) = {x | 0 < x < 1}
[] คือวงเล็บช่วงปิดที่รวมจุดขอบเขตทั้งหมด ตัวอย่างเช่น [0, 1] หมายถึงมากกว่าหรือเท่ากับ 0 และน้อยกว่าหรือเท่ากับ 1 ในรูปแบบเซต: [0, 1] = {x | 0 <= x <= 1}
ฟังก์ชันสำหรับจำนวนเต็ม¶
- random.randrange(start: int, stop: int | None = None, step: int = 1) int¶
รูปแบบแรกคืนค่าจำนวนเต็มสุ่มจากช่วง [0, stop) รูปแบบที่สองคืนค่าจำนวนเต็มสุ่มจากช่วง [start, stop) รูปแบบที่สามคืนค่าจำนวนเต็มสุ่มจากช่วง [start, stop) โดยมีขั้น step ตัวอย่างเช่น การเรียก
randrange(1, 10, 2)จะคืนค่าจำนวนคี่ระหว่าง 1 ถึง 9 รวม
ฟังก์ชันสำหรับจำนวนทศนิยม¶
ฟังก์ชันอื่นๆ¶
- random.seed(n: int | None = None, /) None¶
กำหนดค่าเริ่มต้นให้โมดูล random number generator ด้วย seed n ซึ่งควรเป็นจำนวนเต็ม เมื่อไม่ส่งอาร์กิวเมนต์ (หรือส่ง
None) PRNG จะถูก re-seed จากแหล่งเฉพาะแพลตฟอร์มเดียวกับที่os.urandom()ใช้
- random.choice(sequence: Any) Any¶
เลือกและคืนค่าหนึ่งรายการแบบสุ่มจาก sequence (tuple, list หรือออบเจกต์ใดๆ ที่รองรับการดำเนินการ subscript)