ตัวเลขสุ่มสามารถสร้างได้โดยใช้ฟังก์ชัน random(), uniform(), randange() และ randint() ในโมดูลสุ่มของไลบรารีมาตรฐาน Python
โมดูลสุ่มรวมอยู่ในไลบรารีมาตรฐาน ดังนั้นจึงไม่จำเป็นต้องติดตั้งเพิ่มเติม แน่นอน คุณต้องนำเข้ามัน
ข้อมูลต่อไปนี้มีให้ที่นี่
random.random()
(จำนวนจุดลอยตัวระหว่าง 0.0 ถึง 1.0)random.uniform()
(ช่วงของตัวเลขทศนิยมใด ๆ)- สร้างตัวเลขสุ่มตามการแจกแจงแบบปกติ การแจกแจงแบบเกาส์เซียน ฯลฯ
random.randrange()
(จำนวนเต็มของช่วงและขั้นตอนโดยพลการ)random.randint()
(จำนวนเต็มในช่วงใดๆ)- การสร้างรายการที่มีตัวเลขสุ่มเป็นองค์ประกอบ
- รายการเลขทศนิยมสุ่ม
- รายการตัวเลขสุ่มจำนวนเต็ม
- เริ่มต้นตัวสร้างตัวเลขสุ่ม (แก้ไขเมล็ดตัวเลขสุ่ม)
ดูบทความต่อไปนี้เกี่ยวกับวิธีการแยกหรือเรียงลำดับองค์ประกอบของรายการแบบสุ่ม
- บทความที่เกี่ยวข้อง:การเลือกองค์ประกอบสุ่มจากรายการใน Python โดยใช้ตัวเลือก (), ตัวอย่าง (), ตัวเลือก ()
- random.random()(จำนวนจุดลอยตัวระหว่าง 0.0 ถึง 1.0)
- random.uniform()(ช่วงของตัวเลขทศนิยมใด ๆ)
- สร้างตัวเลขสุ่มตามการแจกแจงแบบปกติ การแจกแจงแบบเกาส์เซียน ฯลฯ
- random.randrange()(จำนวนเต็มของช่วงและขั้นตอนโดยพลการ)
- random.randint()(จำนวนเต็มในช่วงใดๆ)
- การสร้างรายการที่มีตัวเลขสุ่มเป็นองค์ประกอบ
- เริ่มต้นตัวสร้างตัวเลขสุ่ม (แก้ไขเมล็ดตัวเลขสุ่ม)
random.random()(จำนวนจุดลอยตัวระหว่าง 0.0 ถึง 1.0)
ฟังก์ชันของโมดูลสุ่ม random() สร้างจำนวนจุดลอยตัวแบบสุ่มของประเภท float ที่อยู่ระหว่าง 0.0 ถึง 1.0
import random
print(random.random())
# 0.4496839011176701
random.uniform()(ช่วงของตัวเลขทศนิยมใด ๆ)
uniform(a, b)
ฟังก์ชันของโมดูลสุ่มนี้จะสร้างตัวเลขสุ่มของประเภททศนิยมจำนวนจุดทศนิยมในช่วงใดๆ ต่อไปนี้
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
อาร์กิวเมนต์ทั้งสองอาจมีขนาดใหญ่กว่าหรือเล็กกว่าก็ได้ หากเท่ากันก็จะคืนค่านั้นโดยธรรมชาติ ค่าที่ส่งกลับจะเป็นจำนวนทศนิยมเสมอ
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
อาร์กิวเมนต์ยังสามารถระบุเป็นทศนิยม
print(random.uniform(1.234, 5.637))
# 2.606743596829249
ค่าของ b จะรวมอยู่ในช่วงหรือไม่นั้นขึ้นอยู่กับการปัดเศษต่อไปนี้ ตามเอกสารa + (b-a) * random.random()
ค่าจุดสิ้นสุด b อยู่ในช่วงหรือไม่ขึ้นอยู่กับการปัดเศษทศนิยมในสมการต่อไปนี้
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
สร้างตัวเลขสุ่มตามการแจกแจงแบบปกติ การแจกแจงแบบเกาส์เซียน ฯลฯ
ฟังก์ชัน random() และ uniform() ด้านบนสร้างตัวเลขสุ่มแบบกระจายแบบสม่ำเสมอ แต่ยังมีฟังก์ชันสำหรับสร้างตัวเลขทศนิยมที่ตามมาด้วยการแจกแจงต่อไปนี้
- การกระจายเบต้า:
random.betavariate()
- การกระจายแบบเลขชี้กำลัง:
random.expovariate()
- การกระจายแกมมา:
random.gammavariate()
- การกระจายแบบเกาส์เซียน:
random.gauss()
- การกระจายแบบล็อกปกติ:
random.lognormvariate()
- การกระจายแบบปกติ:
random.normalvariate()
- Von Mises แจกจ่าย:
random.vonmisesvariate()
- การกระจายพาเรโต:
random.paretovariate()
- การกระจาย Weibull:
random.weibullvariate()
พารามิเตอร์ของการแจกแจงแต่ละครั้งถูกระบุโดยอาร์กิวเมนต์ ดูเอกสารอย่างเป็นทางการสำหรับรายละเอียด
random.randrange()(จำนวนเต็มของช่วงและขั้นตอนโดยพลการ)
randrange(start, stop, step)
ฟังก์ชันของโมดูลสุ่มนี้จะส่งคืนองค์ประกอบที่เลือกแบบสุ่มจากองค์ประกอบต่อไปนี้range(start, stop, step)
เช่นเดียวกับ range() อาร์กิวเมนต์ start และ step สามารถละเว้นได้ หากละไว้ start=0 และ step=1
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
ขั้นตอนอาร์กิวเมนต์สามารถตั้งค่าให้สร้างจำนวนเต็มสุ่มคู่หรือคี่ หรือจำนวนเต็มสุ่มที่เป็นผลคูณของสาม
ตัวอย่างเช่น ถ้า start เป็นเลขคู่และ step=2 เฉพาะเลขจำนวนเต็มในช่วงเท่านั้นที่สามารถสุ่มได้
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint()(จำนวนเต็มในช่วงใดๆ)
randint(a, b)
ฟังก์ชันของโมดูลสุ่มนี้จะคืนค่า int จำนวนเต็มสุ่มต่อไปนี้a <= n <= b
randrange(a, b + 1)
เทียบเท่ากับสิ่งนี้ โปรดทราบว่าค่าของ b จะรวมอยู่ในช่วงด้วย
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
การสร้างรายการที่มีตัวเลขสุ่มเป็นองค์ประกอบ
ในส่วนนี้ เราจะอธิบายวิธีใช้โมดูลสุ่มของไลบรารีมาตรฐานเพื่อสร้างรายการที่มีตัวเลขสุ่มเป็นองค์ประกอบ
รายการตัวเลขสุ่มพร้อมทศนิยมลอยตัว
ในการสร้างรายการที่มีองค์ประกอบเป็นตัวเลขสุ่มทศนิยม ให้รวมฟังก์ชัน random() และ uniform() เข้ากับสัญลักษณ์แสดงความเข้าใจรายการ
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
ในตัวอย่างข้างต้น range() ถูกใช้ แต่รายการและ tuples ยังเป็นไปได้สำหรับจำนวนองค์ประกอบที่ต้องการ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับความเข้าใจในรายการ โปรดดูบทความต่อไปนี้
- บทความที่เกี่ยวข้อง:การใช้สัญกรณ์ความเข้าใจรายการ Python
รายการสุ่มเลขเต็มจำนวนเต็ม
เมื่อสร้างรายการที่มีองค์ประกอบเป็นตัวเลขสุ่มจำนวนเต็ม การรวม randange() และ randint() ด้านบนกับสัญลักษณ์ความเข้าใจรายการอาจส่งผลให้เกิดค่าที่ซ้ำกัน
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
หากคุณต้องการสร้างลำดับจำนวนเต็มแบบสุ่มโดยไม่ทำซ้ำ ให้แยกองค์ประกอบของ range() ด้วยช่วงที่กำหนดโดยใช้ random.sample()
print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]
print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ random.sample() โปรดดูบทความต่อไปนี้
- บทความที่เกี่ยวข้อง:การเลือกองค์ประกอบสุ่มจากรายการใน Python โดยใช้ตัวเลือก (), ตัวอย่าง (), ตัวเลือก ()
เริ่มต้นตัวสร้างตัวเลขสุ่ม (แก้ไขเมล็ดตัวเลขสุ่ม)
โดยการให้จำนวนเต็มตามอำเภอใจกับ seed(ฟังก์ชันของโมดูลสุ่ม) เมล็ดตัวเลขสุ่มสามารถแก้ไขได้และตัวสร้างตัวเลขสุ่มสามารถเริ่มต้นได้
หลังจากการเริ่มต้นด้วยเมล็ดพันธุ์เดียวกัน ค่าสุ่มจะถูกสร้างขึ้นในลักษณะเดียวกันเสมอ
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025