แอปพลิเคชันคอมพิวเตอร์หลายอย่างต้องการสร้างตัวเลขสุ่ม อย่างไรก็ตาม ไม่มีตัวใดสร้างตัวเลขสุ่มจริงได้ Python เหมือนเทคนิคการเขียนโปรแกรมอื่นๆ ใช้ตัวสร้างสุ่มเทียม (pseudo-random generator) การสุ่มของ Python อาศัยอัลกอริทึม Mersenne Twister ที่ผลิต float ความแม่นยำ 53-bit เทคนิคนี้เร็วและ thread-safe แต่ไม่เหมาะสำหรับวัตถุประสงค์ทางเข้ารหัส
ไลบรารีมาตรฐานของ Python มีโมดูล random ซึ่งกำหนดฟังก์ชันต่างๆ สำหรับจัดการการสุ่ม:
random.seed() - ฟังก์ชันนี้เริ่มต้นตัวสร้างตัวเลขสุ่ม เมื่อนำเข้าโมดูล random ตัวสร้างจะถูกเริ่มต้นด้วยความช่วยเหลือของเวลาระบบ เพื่อเริ่มต้นตัวสร้างใหม่ (reseed) ใช้ int, str, bytes หรือ bytearray object ใดๆ
random.getstate() - ฟังก์ชันนี้ร่วมกับ setstate() ช่วยให้สร้างข้อมูลสุ่มเดียวกันซ้ำๆ ได้ ฟังก์ชัน getstate() คืนค่าสถานะภายในของตัวสร้างตัวเลขสุ่ม
random.setstate() - ฟังก์ชันนี้กู้คืนสถานะภายในของตัวสร้าง
ฟังก์ชันต่อไปนี้จัดการการสร้างตัวเลขจำนวนเต็มสุ่ม:
random.randrange() - ฟังก์ชันนี้สร้างจำนวนเต็มสุ่มระหว่างช่วงที่กำหนด สามารถรับ 3 พารามิเตอร์:
random.randrange(start, stop, step)
พารามิเตอร์ start และ step เป็นตัวเลือก ค่าเริ่มต้นคือ 0 และ 1 ตามลำดับ Step กำหนดช่วงห่างระหว่างตัวเลขติดต่อกัน:
>>> random.randrange(10) 5 >>> random.randrange(10, 20) 17 >>> random.randrange(100, 200, 2) 188
(หมายเหตุ: จำไว้ว่าเอาต์พุทของคำสั่งข้างต้น และคำสั่งอื่นๆ ในบทความนี้อาจไม่เหมือนกัน เพราะสร้างขึ้นแบบสุ่ม)
random.randint() - ฟังก์ชันนี้สร้างจำนวนเต็มสุ่มระหว่าง 2 พารามิเตอร์ คล้ายกับ randrange() แต่ไม่มีพารามิเตอร์ step พารามิเตอร์ start บังคับ:
>>> random.randint(1, 10) 6 >>> random.randint(100, 200) 134
ฟังก์ชันต่อไปนี้จัดการตัวเลขทศนิยมสุ่ม:
random.random() - ฟังก์ชันนี้สร้างตัวเลขทศนิยมสุ่มระหว่าง 0.0 และ 1.0:
>>> random.random() 0.668544544081956
random.uniform() - ฟังก์ชันนี้คืนค่าตัวเลขทศนิยมสุ่มระหว่าง 2 พารามิเตอร์:
>>> random.uniform(0.5, 1.5) 1.2760281470664903 >>> random.uniform(1, 10) 7.336985794193224 >>> random.uniform(10, 5) 7.817794757786727
ฟังก์ชันต่อไปนี้กระทำต่ออ็อบเจ็กต์ลำดับ เช่น สตริง, ลิสต์ หรือทูเพิล:
random.choice() - ฟังก์ชันนี้เลือกองค์ประกอบสุ่มจากลำดับ หากลำดับว่าง จะยก IndexError:
>>> random.choice("Tutorialspoint")
'o'
>>> random.choice(range(10))
2
>>> random.choice([15, 31, 6, 29, 55, 5])
55
>>> random.choice((15, 31, 6, 29, 25, 55))
15
random.choices() - ฟังก์ชันนี้เลือกหลายองค์ประกอบจากลิสต์แบบสุ่ม พารามิเตอร์แรกคือลำดับ และพารามิเตอร์ที่สองคือจำนวนครั้งที่จะเลือก:
>>> name = "TutorialsPoint" >>> random.choices(name, k=2) ['T', 'o']
random.shuffle() - ฟังก์ชันนี้เรียงลำดับองค์ประกอบในลำดับที่เปลี่ยนแปลงได้ (mutable sequence) และวางแบบสุ่ม:
>>> num = [10, 20, 30, 40, 50] >>> random.shuffle(num) >>> num [50, 20, 40, 30, 10]
random.sample() - ฟังก์ชันนี้ทำงานกับลำดับที่ไม่เปลี่ยนแปลงได้ (immutable sequence) คืนค่ารายการของรายการที่เลือกสุ่มจากลำดับ โดยปล่อยให้ลำดับเดิมคงที่:
>>> name = "TutorialsPoint"
>>> nm = random.sample(name, k=2)
>>> name, nm
('TutorialsPoint', ['i', 'a'])