ความรู้

Code สุ่มหมายเลขบัตรประจำตัวประชาชนคนไทย 13 หลัก

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