วันจันทร์ที่ 2 พฤศจิกายน พ.ศ. 2558

วิธีการ Debug แบบที่ต้องพึ่งผลลัพธ์แบบสุ่มจากฟังก์ชั่น math.random()

        โดยปกติแล้วในโค้ดของเรา ถ้ามีการสุ่มเราจะพึ่ง ฟังก์ชั่น math.random() แต่ที่ในเวลาเราที่เราจะ Debug ฟังก์ชั่น math.random() ของเราจะรีเทิร์นค่าเดิมมาเสมอๆ
ทีนี้เราจะทำยังไงล่ะ ถ้าสมมติโค้ดของเราใช้ได้บ้างพังบ้าง มันก็อาจจะเกิดจากค่าที่เราใช้จาก math.random() ยกตัวอย่างเช่นโจมตีติด Critical หรือใส่ดีบัฟติดหรือเปล่า รันกี่รอบๆก็จะได้ผลลัพธ์เดิมๆเพราะ math.random() ของเราคืนค่าเดิมมาตลบอดนั่นเอง
ตัวอย่างเช่นprint(math.random(100))
57
ซึ่งเรารันอีกกี่ทีก็จะได้ 57 เหมือนเดิม
วิธีการ Debug ให้ได้หลายผลลัพธ์แรกคือ
1. ใส่ For ครอบ
for i=0, 10 ,1 do
print(isCritical(50)) //ใน isCritical มีเช็ค % กับ math.random(100)
end
false
false
false
false
*
จะทำให้ math.random() ของเราทำงานหลายครั้งและเปลี่ยนค่า จากตัวอย่างอาจจะติดในลูปครั้งที่ 5 และ Error ทันที
แต่ถ้าเรามีการกำหนด Seed ไว้ก่อน ให้นำ seed จากรอบที่มีปัญหามาเช็คได้เลย
2. กำหนด randomseed ก่อน
math.randomseed(seed)
print(isCritical(50))

ก็จะทำให้เราพบบรรทัดที่ Error ได้เลยเพราะ จะ Debug Error ในทันทีครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น