PHP:
การสร้างตัวเลขสุ่ม
วิธีการ:
PHP มีฟังก์ชันหลายอย่างสำหรับการสร้างตัวเลขสุ่ม แต่ฟังก์ชั่นที่ใช้กันมากที่สุดคือ rand()
, mt_rand()
, และสำหรับวัตถุประสงค์ทางด้านการเข้ารหัสลับคือ random_int()
.
เพื่อสร้างตัวเลขสุ่มง่ายๆ ระหว่าง 0 และ getrandmax() (ค่าที่ใหญ่ที่สุดที่ rand()
สามารถคืนค่าได้) คุณสามารถใช้:
echo rand();
สำหรับช่วงที่เจาะจงมากขึ้น เช่น ระหว่าง 1 และ 100:
echo rand(1, 100);
อย่างไรก็ตาม mt_rand()
เป็นตัวเลือกที่ดีกว่าสำหรับความเร็วและความสุ่ม:
echo mt_rand(1, 100);
ผลลัพธ์สำหรับทั้งสองอาจเป็นอะไรก็ได้ระหว่าง 1 และ 100 ขึ้นอยู่กับการสุ่ม เช่น 42
.
สำหรับบริบทของการเข้ารหัสลับหรือความปลอดภัย เมื่อความไม่สามารถคาดเดามีความสำคัญ random_int()
เป็นตัวเลือกที่ดีที่สุดเนื่องจากมันสร้างจำนวนเต็มที่ปลอดภัยทางด้านการเข้ารหัสลับอย่างปลอดภัย:
echo random_int(1, 100);
อีกครั้ง ผลลัพธ์คือตัวเลขสุ่มระหว่าง 1 และ 100 เช่น 84
, แต่มีการรับประกันความสุ่มที่แข็งแรงยิ่งขึ้น
การทำความเข้าใจลึกซึ้ง
ฟังก์ชัน rand()
มีอยู่ใน PHP ตั้งแต่เวอร์ชันต้นๆ ทำหน้าที่เป็นวิธีการเริ่มต้นในการสร้างตัวเลขสุ่ม อย่างไรก็ตาม ไม่ใช่ตัวเลือกที่ดีที่สุดสำหรับแอปพลิเคชันที่ต้องการระดับความสุ่มสูงเนื่องจากอัลกอริธึมที่คาดเดาได้ค่อนข้างง่าย
mt_rand()
, แนะนำใน PHP 4, อาศัยอัลกอริธึม Mersenne Twister - ซึ่งเหนือกว่าในแง่ของความเร็วและความสุ่มที่สามารถสร้างได้เมื่อเปรียบเทียบกับ rand()
. อย่างรวดเร็วทันใจจึงกลายเป็นตัวเลือกที่ต้องการสำหรับความต้องการส่วนใหญ่ที่ไม่เกี่ยวกับการเข้ารหัสลับ
สำหรับแอปพลิเคชันที่มีความไวต่อความปลอดภัย random_int()
ถูกแนะนำใน PHP 7 เพื่อสร้างจำนวนเต็มที่ปลอดภัยทางด้านการเข้ารหัสลับโดยใช้ไบต์สุ่มจากเครื่องกำเนิดตัวเลขสุ่มของระบบ มันปลอดภัยกว่า rand()
หรือ mt_rand()
มาก ทำให้เป็นตัวเลือกที่ดีที่สุดสำหรับการสร้างโทเค็น, กุญแจ หรือองค์ประกอบอื่นๆ ที่ความคาดเดาอาจนำไปสู่ช่องโหว่ด้านความปลอดภัย
แม้จะมีการปรับปรุงเหล่านี้ แต่สำคัญที่จะเลือกฟังก์ชันที่เหมาะสมตามบริบทของแอปพลิเคชัน สำหรับการใช้งานทั่วไป mt_rand()
ก็เพียงพอแล้ว แต่สำหรับอะไรก็ตามที่อาจถูกเป้าหมายหรือถูกใช้ประโยชน์ random_int()
เป็นทางไปที่ให้ทั้งความสุ่มและความปลอดภัย