โมดูลสุ่ม (Random Module) ในภาษา Python

โมดูลสุ่ม (Random Module) เป็นโมดูลของภาษา Python ที่มีความสามารถในการสุ่มตัวเลข สตริง หรือคอลเล็กชันต่างๆ โดยมีฟังก์ชันและเมธอดต่างๆ ที่ช่วยในการสุ่มให้ง่ายขึ้น โมดูลนี้มีความสามารถในการสุ่มทั้งแบบ pseudo-random และ random จริงๆ โดยแบบ pseudo-random จะใช้วิธีการสุ่มตามอัลกอริทึมที่กำหนดไว้ และแบบ random จะใช้เวลาปัจจุบันของระบบเป็น seed ในการสุ่ม

โมดูลสุ่ม (Random Module) เป็นโมดูลที่ใช้สำหรับสุ่มค่าต่าง ๆ ภายในโปรแกรม Python โดยมีฟังก์ชันต่าง ๆ ที่สามารถใช้งานได้ เช่น randint, choice, shuffle ฯลฯ

โดยสามารถ import โมดูลนี้เข้ามาในโปรแกรม Python ด้วยคำสั่ง

import random


หรือสามารถ import ฟังก์ชันที่ต้องการใช้งานเฉพาะอย่างเดียวได้ โดยใช้รูปแบบดังนี้

from random import randint

โดยในโมดูลนี้มีฟังก์ชันต่าง ๆ ที่สามารถใช้งานได้ เช่น

  • randrange(start, stop, step) – สุ่มเลขตั้งแต่ start ถึง stop โดยกำหนด step (ไม่ต้องใส่ step ก็ได้)
  • randint(start, stop) – สุ่มเลขจำนวนเต็มระหว่าง start ถึง stop
  • random() – สุ่มเลขทศนิยมระหว่าง 0 ถึง 1
  • choice(sequence) – สุ่มเลือกข้อมูลใน sequence มาหนึ่งตัว
  • shuffle(sequence) – สลับตำแหน่งของข้อมูลใน sequence
  • uniform(a, b) – สุ่มเลขจำนวนจริงในช่วง [a, b]
  • sample(population, k) – สุ่ม k ตัวอย่างจาก population โดยสุ่มค่าแบบไม่มีการซ้ำ

ซึ่งฟังก์ชันเหล่านี้สามารถนำมาใช้สร้างเกมหรือการทำงานที่ต้องการความสุ่มสลับได้ตามต้องการ โดยในการใช้งานฟังก์ชันและเมธอดในโมดูลสุ่ม (Random Module) จะต้อง import โมดูลก่อนการใช้งานด้วยคำสั่ง import random และสามารถใช้งานได้เลยโดยการเรียกใช้ชื่อฟังก์ชัน/เมธอดตามที่ต้องการ เช่น random.randint(1, 10) ในการสุ่มเลขจำนวนเต็มระหว่าง 1 ถึง 10


ตัวอย่าง
การสุ่มตัวเลขจำนวนเต็ม 10 ตัว ในช่วง 1 ถึง 100 ด้วยฟังก์ชัน randint() ของโมดูล random

import random

for i in range(10):
    print(random.randint(1, 100))

ผลลัพธ์จะเป็นตัวเลขจำนวนเต็ม 10 ตัว ที่สุ่มมาจากช่วง 1-100 แต่ละครั้ง


ตัวอย่าง การสุ่มตัวเลขจำนวนจริง 10 ตัว ในช่วง 0 ถึง 1 ด้วยฟังก์ชัน uniform() ของโมดูล random

import random

for i in range(10):
    print(random.uniform(0, 1))

ผลลัพธ์จะเป็นตัวเลขจำนวนจริง 10 ตัว ที่สุ่มมาจากช่วง 0-1 แต่ละครั้ง


ตัวอย่าง
การใช้งานโมดูลสุ่ม (Random Module)

import random

# สุ่มตัวเลขจำนวนเต็มตั้งแต่ 0 จนถึง 9
x = random.randint(0, 9)
print(x)

# สุ่มตัวเลขจำนวนจริงระหว่าง 0 ถึง 1
y = random.random()
print(y)

# สุ่มสมาชิกจากลิสต์
mylist = ["apple", "banana", "cherry"]
z = random.choice(mylist)
print(z)

# สลับลำดับของสมาชิกในลิสต์
random.shuffle(mylist)
print(mylist)

# สุ่มเลขจำนวนจริงจากการแจกแจงแบบ Normal Distribution
mu, sigma = 0, 0.1 # ค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐาน
num_samples = 1000
samples = [random.normalvariate(mu, sigma) for _ in range(num_samples)]
print(samples[:10])

ผลลัพธ์ที่ได้:

4
0.43993119131583447
cherry
['cherry', 'banana', 'apple']
[-0.00907126039622186, 0.10322615773712612, -0.06491808925134156, -0.01776085594666974, -0.06360905759444414, -0.10589304071283735, 0.034057821738503324, 0.00021517867275368747, 0.05753486215638367, -0.14636029468216213]

 

ตัวอย่าง การสุ่มแบบไม่ซ้ำกันหลายตัว (sampling without replacement)

สุ่มเลขจำนวนเต็ม 5 ตัวออกมาโดยไม่ซ้ำกันโดยใช้ random.sample() ซึ่งรับ argument 2 ตัวคือ ลิสต์ของตัวเลขและจำนวนที่ต้องการสุ่ม

import random

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sample = random.sample(nums, 5)

print(sample)

ผลลัพธ์ที่ได้:

[7, 5, 6, 10, 8]

 

ตัวอย่าง การสุ่มตัวอักษร

สุ่มตัวอักษรเดียวโดยใช้ random.choice() ซึ่งรับ argument เป็น string

import random

letters = 'abcdefghijklmnopqrstuvwxyz'
letter = random.choice(letters)

print(letter)

ผลลัพธ์ที่ได้:

'f'


สุ่มตัวอักษรหลายตัวโดยใช้ random.choices() ซึ่งรับ argument 2 ตัว คือ string และจำนวนตัวอักษรที่ต้องการสุ่ม

import random

letters = 'abcdefghijklmnopqrstuvwxyz'
sample = random.choices(letters, k=5)

print(sample)

ผลลัพธ์ที่ได้:

['h', 'n', 'a', 'j', 'c']