การสร้างตัวเลขสุ่ม

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() เป็นทางไปที่ให้ทั้งความสุ่มและความปลอดภัย