พอดีกำลังจะเขียน 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();
