[TH] How to calculate the percentage of head or tails occurrence of a one coin.

บทความนี้เป็นตัวอย่างโปรแกรมภาษาไพธอนเพื่อคำนวณหาร้อยละของการเกิดของด้านหัวหรือก้อยของการโยนเหรียญที่มี 2 ด้านจำนวน n ครั้ง

สิ่งที่ต้องทราบ

  1. การรับค่าในไพธอน
  2. การแปลงประเภทของข้อมูล
  3. การสุ่มค่า
  4. การหาร้อยละ

การรับค่าในไพธอน

คำสั่งสำหรับการรับค่าในภาษาไพธอนเป็นดังนี้

ตัวแปร = input( msg )

โดย ตัวแปร เป็นหน่วยความจำที่เราตั้งชื่อไว้แทนตำแหน่งที่จัดเก็บในหน่วยความจำ และ msg คือ ข้อความที่ให้แสดงบนจอแสดงผลก่อนปรากฏเครื่องหมายพร็อมท์ (prompt) สำหรับรับข้อมูล ดังนั้น ถ้าต้องการรับข้อมูลไปเก็บในตัวแปร n สามารถเขียนโค้ดได้ดังนี้

n = input( “จำนวนครั้งการสุ่ม?”)

การแปลงประเภทของข้อมูล

อย่างไรก็ดี ค่าที่ได้จาก input() นั้นเป็นข้อมูลประเภท string ดังนั้น ต้องแปลงค่าให้เป็น จำนวนเต็มหรือทศนิยมด้วยการแปลงด้วย int( ) หรือ float( ) จึงได้ชุดคำสั่งเป็นดังนี้

n = int( input( “จำนวนครั้งการสุ่ม?” ))
หรือ
n = float( input( “จำนวนครั้งการสุ่ม?” ))

ถึงแม้เราแปลงข้อมูลเป็นตัวเลข แต่กรณีที่ข้อมูลนำเข้าเป็นข้อความที่ไม่ใช่ตัวเลข จะส่งผลให้โปรแกรมทำงานผิดพลาดและทำงานต่อไปไม่ได้ ดังนั้น การเขียนโปรแกรมจึงต้องทำการดักข้อผิดพลาดที่อาจจะเกิดขึ้นได้ด้วย try/except ดังนี้

try:
    n = int( input( "จำนวนครั้งการสุ่ม?" ))
except:
    print("กรุณาป้อนตัวเลขจำนวนเต็ม")

การสุ่มค่า

การสุ่มค่าด้วยภาษาไพธอนใช้คำสั่ง random() จากไลบรารี random ดังนั้น ตัวอย่างการสุ่มค่าคือ

import random
ค่าที่สุ่มได้ = random.random()

ค่าที่สุ่มได้เป็นจำนวนทศนิยมในช่วง 0 ถึง 1 ดังนั้นถ้าต้องการให้การสุ่มเป็นการสุ่มค่าระหว่าง 0 หรือ 1 ซึ่งเป็นค่าจำนวนเต็มสามารถเขียนเป็นฟังก์ชันได้ดังนี้

def  randCoin():
    return int(random.random()*2)

ดังนั้น การตรวจสอบว่าถ้าสุ่ม n ครั้งเกิดหัวหรือก้อยเป็นจำนวนเท่าไรเขียนโค้ดได้ประมาณนี้

import  random
numH = 0
numT = 0
n = 4
for counter in range(n):
    if (randCoin() == 0):
        numH += 1
    else:
        numT += 1
print("H:{}, T:{}".format(numH, numT))

การหาร้อยละ

วิธีการคำนวณร้อยละของ m จาก n กระทำโดยการนำค่า m หารด้วย n และนำผลลัพธ์ไปคูณด้วย 100 เป็น ดังนี้

ร้อยละ = m/n*100

ดังนั้น ฟังก์ชันของการแปลงจึงเขียนได้ดังนี้

sub calcPercentage(m, n):
    return (100.0*(m/n))

ตัวอย่างโปรแกรม

ตัวอย่างโปรแกรม code22-1 เป็นการแสดงร้อยละของการเกิดหัวและก้อยจากการโยนเหรียญ 1 เหรียญ จำนวน n ครั้ง

#code22-1
import random
def randCoin():
    return int(random.random()*2)
def calcPercentage(m, n):
    if n == 0:
        return 0
     return (100.0*(m/n))
numH = 0
numT = 0
try:
    n = int(input("จำนวนครั้งการสุ่ม?"))
    for counter in range(n):
        if (randCoin()==0):
             numH += 1
         else:
             numT += 1
     print("H={}%, T={}%".format(
                calcPercentage(numH), 
                calcPercentage(numT)))
except:
    print("กรุณากรอกจำนวนครั้งเป็นตัวเลขจำนวนเต็ม")

สรุป

จากบทความนี้เราได้เรียนรู้วิธีการรับข้อมูล วิธีการแปลงข้อมูลสตริงให้เป็นตัวเลข การดักข้อผิดพลาด การสุ่ม การสุ่มในช่วงค่าที่ต้องการ และการหาค่าร้อยละ ซึ่งเป็นพื้นฐานสำหรับการนำไปใช้ต่อไป

สุดท้ายนี้ขอให้สนุกกับการเขียนโปรแกรมครับ

(C) 2020, โดย อ.ดนัย เจษฎาฐิติกุล/อ.จารุต บุศราทิจ
ปรับปรุงเมื่อ 2020-11-26
ปรับปรุงเมื่อ 2021-08-25