มินิโปรเจกต์: โปรแกรมสุ่มเลข
ในโปรเจกต์นี้ เราจะสร้างโปรแกรมสุ่มเลขอย่างง่ายๆ กัน
ตัวอย่าง:
ลองเล่นกับตัวอย่างข้างบนดู
- กดที่ปุ่ม “Randomize”
- เมื่อกดแล้ว กล่องข้อความจะแสดงเลขที่สุ่มได้ ตั้งแต่ 1 ถึง 10
เรื่องที่เราจะเรียนรู้ในโปรเจกต์นี้
ในโปรเจกต์นี้ เราจะเรียนรู้เกี่ยวกับสองฟังก์ชัน คือ:
Math.random()Math.floor(…)
ขึ้นหน้าเว็บ
เริ่มจากสร้างหน้าเว็บตามนี้
html<h1>Randomizer</h1> <input id="number" size="5"> <input type="button" id="randomize" value="Randomize"> <script> let number = document.getElementById('number') let randomize = document.getElementById('randomize') randomize.onclick = () => { // เดี๋ยวเราจะเขียนโค้ดในส่วนนี้ } </script>
รู้จักกับ Math.random
ใน JavaScript มีฟังก์ชันที่ชื่อว่า
Math.random()เมื่อเราเรียกใช้งานฟังก์ชันนี้ คอมพิวเตอร์จะสุ่มเลขมาให้ โดยเลขที่ได้นั้นจะมีค่ามากกว่าหรือเท่ากับ 0 และน้อยกว่า 1 (กล่าวคือ อยู่ในช่วง
[0, 1))Math.random()""แต่ละครั้งที่คำสั่งนี้ทำงาน ก็จะได้ผลลัพธ์ที่แตกต่างกันออกไป
ฟังก์ชัน
Math.random()คืนค่ากลับมาเป็นเลขทศนิยม แต่เราอยากได้ตัวเลขสุ่ม เป็นจำนวนเต็ม ระหว่าง 1–10 ต้องทำอย่างไร?
รู้จักกับ Math.floor
ใน JavaScript มีอีกฟังก์ชันที่ชื่อว่า
Math.floor(…)ฟังก์ชันนี้ รับเลขที่เป็นทศนิยมเข้าไป แล้วคืนค่ากลับมาเป็นจำนวนเต็ม โดยจะปัดลง
Math.floor(3.14)3Math.floor(3.99)3Math.floor(4.00)4กรณีที่เป็นเลขติดลบ ฟังก์ชัน
Math.floor(…)จะปัดลงเสมอMath.floor(-3.14)-4Math.floor(-3.99)-4Math.floor(-4.00)-4
สุ่มเลขจำนวนเต็ม
สมมติว่าเราผลลัพธ์ของการสั่ง
Math.random()มาเก็บไว้ในตัวแปรxแล้วเราจะได้ผลลัพธ์ที่แตกต่างกันออกไปทุกครั้งที่เราเรียกใช้xjslet x = Math.random()เราสามารถใช้ตัวดำเนินการทางคณิตศาสตร์ และ
Math.floor(…)ร่วมกัน เพื่อสร้างคำตอบที่ต้องการได้ครับโค้ด ผลลัพธ์ที่ได้ ตัวอย่างผลลัพธ์ xจำนวนทศนิยม ที่ ≥ 0 แต่ < 1 0.000000x * 10จำนวนทศนิยม ที่ ≥ 0 แต่ < 10 0.000000Math.floor(x * 10)จำนวนเต็มที่ ≥ 0 แต่ < 10 (ก็คือ 0 ถึง 9) 0Math.floor(x * 10) + 1จำนวนเต็มที่ ≥ 1 แต่ < 11 (ก็คือ 1 ถึง 10) 1ลองทดสอบด้วยตัวเอง
- เปิด JavaScript Console ขึ้นมา
- พิมพ์
Math.floor(Math.random() * 10) + 1เข้าไปในคอนโซล → ควรจะได้เลขสุ่มตั้งแต่ 1 ถึง 10 ออกมา - ทำซ้ำขั้นตอนที่ 2 หลายๆ ครั้ง แล้วดูผลลัพธ์ที่ได้
นำโค้ดที่ได้มาใส่ในโปรแกรมของเราได้เลย
jslet number = document.getElementById('number') let randomize = document.getElementById('randomize') randomize.onclick = () => { number.value = Math.floor(Math.random() * 10) + 1 }
โค้ด
หลังจากที่ทำโปรเจกต์นี้เสร็จแล้ว จะได้โค้ดดังต่อไปนี้:
ดูโค้ด
html<!doctype html> <html> <head> <title>Randomizer</title> </head> <body> <h1>Randomizer</h1> <input id="number" size="5"> <input type="button" id="randomize" value="Randomize"> <script> let number = document.getElementById('number') let randomize = document.getElementById('randomize') randomize.onclick = () => { number.value = Math.floor(Math.random() * 10) + 1 } </script> </body> </html>โจทย์ฝึกหัดเพิ่มเติม
- ลองทำให้โปรแกรมนี้สามารถตั้งค่าได้ว่าจะสุ่มเลขตั้งแต่เลขอะไรถึงเลขอะไร
ฟังก์ชัน??
จากโค้ดที่เขียนมา จะเห็นโค้ดที่มีลักษณะเป็นแบบนี้:
jsdocument.getElementById('number') document.getElementById('randomize') Math.random() Math.floor(Math.random() * 10)นี่คือ การเรียกใช้งานฟังก์ชัน ซึ่งจะเป็นหัวข้อของตอนต่อไปครับ