พอดีกำลังจะเขียน Web Application อยู่ตัวนึง แล้วพอดีต้องใช้ หมายเลขบัตรประจำตัวประชาชนของคนไทย 13 หลัก เพื่อกรอกข้อมูลประชากรลงไปในระบบ จึงต้องทำการสุ่มหมายเลขบัตรประจำตัวประชาชนที่ถูกต้องลงไปเพื่อทดสอบระบบอยู่เรื่อยๆ ใส่ซ้ำก็ไม่ได้ เลยนั่งหาวิธีการคำนวณหมายเลขบัตรประชาชนอยู่ไปๆ มาๆ ก็เจอตัว wiki ก็เลยรู้วิธีคำนวณ เลยมานั่งเขียน Logic ตามที่เห็น ก็ได้ประมาณนี้ เขียนไว้กันลืมหน่ะครับ ใครมี File Library อยู่แล้ว ก็สามารถนำไปยัดไว้ได้เลยครับ ผมเขียนเป็น function ไว้ให้แล้ว
# สุ่มหมายเลขบัตรประชาชน function randomCitizenID(){ for($i=0;$i<12;$i++){ $k = abs($i + (-13)); $m = rand(0,9); $firstNumber .= $m; // ตัวเลขชุดแรก (12 หลัก) $numberCalc += ($k * $m); } $lastNumber = 11 - ($numberCalc % 11); // ตัวเลขหลักสุดท้าย return $firstNumber.$lastNumber; } echo randomCitizenID();