การสุ่มแบบวงล้อรูเล็ต(roulette wheel selection) (ตอนที่2)

จาก บทความตอนที่ 1 ผมได้กล่าวถึงที่มาที่ไปของคำว่า roulette  ในบทความนี้ผมจะได้กล่าวถึง การสุ่มในคอมพิวเตอร์ ที่ใช้หลักการของ roulette wheel โดยใช้ภาษา java ในการอธิบายครับ

ก่อนอื่นผมขอยกตัวอย่างการสุ่มเลือกข้อมูลแบบธรรมดาก่อน จากตัวอย่างโค๊ดต่อไปนี้ครับ

 //NormalRandom.java

 int[] data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 int randomIndex ;
 for (int i = 0; i < 100; i++) {
    //สุ่มตำแหน่งข้อมูล
    randomIndex = (int) Math.floor( Math.random() * data.length);
    //พิมพ์ผลลัพธ์โดยกำหนดความกว้างขนาด 4 ตัวอักษรในแต่ละตัว
    System.out.printf("%4d", data[randomIndex]);
    if ((i + 1) % 10 == 0)
      System.out.println();

 }

บรรทัดที่ห้า เป็นการสุ่มโดยใช้เมธอด random( )  จากคลาส java.lang.Math  จะได้ค่าเป็นจำนวนจริงอยู่ระหว่าง 0 – 1  จากนั้นนำไปคูณกับขนาดของ array (data.length)  ได้ผลลัพธ์ เป็นจำนวนจริง อยู่ระหว่าง 0-10    แล้วส่งต่อให้เมธอด Math.floor ที่รีเทิร์นค่าเป็นจำนวนเต็ม ที่ต่ำที่สุด(ตัดเศษทศนิยมออก)ครับ ในที่นี้ผมแปลงผลลัพธ์ที่ได้เป็น integer เพื่อนำไปใช้เป็น index ในการเลือกครับ ผลลัพธ์สุดท้ายที่ตัวแปร randomIndex เก็บค่าจะเป็นจำนวนเต็มมีค่า ตั้งแต่ 0-9 ซึ่งก็คือตำแหน่งของข้อมูลในอาเรย์นั่นเอง

 

อ่านเพิ่ม

การสุ่มแบบวงล้อรูเล็ต(roulette wheel selection) (ตอนที่1)

การสุ่มแบบวงล้อรูเล็ต เป็นกระบวนการสุ่มจากกลุ่มคำตอบที่มี โดยใช้การถ่วงน้ำหนัก(weight) มาเป็นนัยยะ  โดยคำตอบที่มีค่าน้ำหนักสูงสุด(เป็นคำตอบเริ่มต้นที่ดีที่สุด) มีโอกาสที่จะถูกเลือกมากที่สุด (มีความน่าจะเป็นสูงสุดที่จะถูกสุ่มเจอ) และคำตอบที่มีค่าน้ำหนักต่ำสุด มีโอกาสถูกเลือกน้อยสุด(ความน่าจะเป็นต่ำสุดที่จะถูกสุ่มเจอ)

แนวคิดนี้เป็นการจำลองการพนันชนิดหนึ่งในคาสิโน รูเล็ต หรือ วงล้อรูเล็ต ซึ่งเกมจะมีลักษณะเป็นจานวงกลมหมุน ผู้เล่นจะทำการลงเดิมพันในจานกลม โดยเลือกเลขเฉพาะ(1,2,3,4..)  สี (ดำ,แดง)   หรืออื่นๆ แล้วแต่คาสิโนเป็นผู้กำหนด  การสุ่มจะทำโดยการเหวี่ยงลูกบอลทรงกลมให้หมุนไปในรางเมื่อลูกบอลตกจากรางลงไปในจานช่องใด การสุ่มจะสิ้นสุด ถ้าตกลงที่ช่องที่ผู้เล่นเลือก ก็ถือว่าผู้เล่นชนะ และได้เงินจากการเดิมพัน ถ้าตกที่อื่นถือว่าเจ้ามือชนะและริบเงินจากผู้เล่น

 

ขอบคุณภาพ roulette wheel จาก wikipedia

อ่านเพิ่ม