เมื่อคุณคิดจะนำแบบฝึกหัดใดแบบฝึกหัดหนึ่ง ไม่ว่าแบบฝึกหัดนั้นจะมาจากหนังสือเรียน ใบกิจกรรม หรือสื่อสิ่งพิมพ์อื่นๆ มาใช้ประกอบการจัดการเรียนการสอน ปัญหาหนึ่งที่พบเห็นคือ สิ่งที่วางเรียงรายอยู่ในแผ่นกระดาษบางๆนั้น คือ ข้อความที่ซ้ำๆกัน มีปริมาณเท่ากับจำนวนที่คุณต้องการจะทำสำเนา เพื่อให้ผู้เรียนได้ทำการฝึกทักษะ คุณคิดเช่นนี้หรือไม่
ความรู้สึกเช่นนี้ มีส่วนทำให้บรรยากาศแห่งการเรียนรู้อยู่ในสภาพที่ไม่น่าจะทำให้ผู้เรียนจะเรียนได้ดีที่สุด คงมีครูผู้สอนน้อยคนที่ขยันทำแบบฝึกหัดที่สลับข้อกัน เพื่อให้เกิดแบบฝึกหัดที่มีข้อเรียงรายที่สลับกัน แต่สิ่งนั้นก็มิได้ ทำให้ผู้เรียนเกิดมิติในการคิดตามแนวทางที่ครูผู้สอนคาดหวังไว้ ผู้เรียนมีสิทธิ์ที่จะเลือกทำโจทย์ในแบบฝึกหัดที่ไม่เรียงตามข้อได้อยู่เช่นเดิม ไม่ว่า จะสลับข้อ ยาก-ง่าย-ปานกลาง-ง่าย-ปานกลางปนกันไปปนกันมา ผู้เรียนอาจจะทำ ง่าย - ง่าย - ปานกลาง - ปานกลาง - ยาก แบบนี้ก็ได้ ซึ่งถือว่าไม่ผิดกติกาใดๆ
โปรแกรมคอมพิวเตอร์ที่ผู้เขียนได้เคยเขียน ไม่ว่า จะเป็นภาษาซี Visual C++ 2005 และ Action Script ของ Flash จะมีคำสั่ง random เพื่อสุ่มเลือกจำนวนมาให้จากขอบเขตที่เราเป็นผู้กำหนด และผู้เขียนได้นำมาใช้ในการสร้างบทเรียนคอมพิวเตอร์ช่วยสอน เรื่อง "ความสัมพันธ์ระหว่างรูปเรขาคณิตสองมิติและสามมิติ" ของนักเรียนชั้นมัธยมศึกษาปีที่ 1 โรงเรียนแหลมบัววิทยา จังหวัดนครปฐม โดยใช้โปรแกรม Microsoft Visual C++ พัฒนาขึ้น บทเรียนที่พัฒนาขึ้นมาครั้งแรกนั้นเป็นไปในลักษณะบทความย่อหน้าแรกที่ได้กล่าวข้างต้น ดูเหมือนว่า ไม่มีชีวิตชีวา จืดชืด แต่เมื่อใช้การสุ่มโจทย์แบบไม่เฉพาะเจาะจงลงไป ทำให้บทเรียนนั้นน่าสนใจมากขึ้น สังเกตจากการที่ได้นำไปทดลองใช้กับนักเรียนที่ผู้เขียนสอนอยู่ พบว่า นักเรียนสนุกกับการใช้บทเรียนเป็นอย่างมาก เพราะนักเรียนไม่ทราบเลยว่า แต่ละข้อที่ปรากฏออกมานั้น โจทย์กำหนดให้อะไรมา แต่ทุกคนต้องแข่งกับเวลา คนใดเสร็จก่อนถือว่า เป็นผู้ชนะ
กรณีศึกษา ตัดกระดาษเป็นรูปสี่เหลี่ยมจัตุรัสที่มีขนาดเท่ากันจำนวน 15 แผ่น จากนั้นเขียนตัวเลขลงบนแผ่นกระดาษที่ตัดเป็นรูปสี่เหลี่ยมจัตุรัสแล้ว แผ่นละ 1 ตัวห้ามซ้ำกัน เมื่อดำเนินการเสร็จสิ้น ใส่แผ่นกระดาษนั้นลงในภาชนะทึบแสง
ทำตามขั้นตอนต่อไปนี้
1. หยิบแผ่นกระดาษขึ้นมา 1 ใบ จดตัวเลขที่ปรากฏบนแผ่นกระดาษนั้นไว้
2. หยิบแผ่นกระดาษแผ่นต่อไปขึ้นมา 1 ใบ จดตัวเลขที่ปรากฏบนแผ่นกระดาษนั้นไว้
3. ทำข้อซ้ำไปเรื่อยๆ จนแผ่นกระดาษในภาชนะทึบแสงหมด
ตัวเลขที่ถูกบันทึกไว้ตามลำดับก่อน-หลัง คือ ลำดับการแสดงผลของโจทย์
หากนำแผ่นกระดาษทั้งหมดใส่ลงในภาขนะทึบแสงแล้วหยิบ ลำดับการแสดงผลของโจทย์จะเป็นอีกลักษณะหนึ่ง
จากขั้นตอนวิธีการทำงานที่กล่าวมา พอจะสรุปหลักการ ทำงานได้ดังนี้
1. กำหนดตัวแปรไว้จำนวน 15 ตัว เพื่อเก็บค่า 1 - 15 เช่น x[15]
2. ใช้คำสั่ง random (แต่ละโปรแกรมมีคำสั่งใช้งานไม่เหมือนกัน) ใน Microsoft Visual C++ 2005 ผมใช้ มอดูโล เข้ามาเกี่ยวข้องและเก็บเศษที่เหลือเอาไว้ จากนั้นนำเศษที่เก็บได้มาสร้างเป็น List และ List ที่ใช้คือ Double Link-List เพราะไม่ว่า จะค้นหาจากหัวไปหาง หรือ จะค้นหาจากหางไปหัว สะดวกดี หากจะใช้ List แบบวงกลมก็สุดยอดมาก ผมขอจบการนำเสนอหลักการ/แนวคิด ของการสุ่มโจทย์แบบไม่เฉพาะเจาะจง ไว้เพียงเท่านี้ครับ