PHP เป็นตัวสร้างตัวเลขสุ่มที่ดีที่สุด การเลือกแบบสุ่มจากอาเรย์ใน PHP ตัวเลขสุ่มใน PHP

เริ่มต้นตัวสร้างตัวเลขสุ่ม ไวยากรณ์:

โมฆะ srand (int เมล็ด)

เริ่มต้นตัวสร้างตัวเลขสุ่มด้วยค่าเมล็ด

แสนด์((สองเท่า) ไมโครไทม์()*1000000);
$สุ่ม = แรนด์();
สะท้อน $ สุ่ม;

GETRANDMAX

ส่งกลับตัวเลขสุ่มที่ใหญ่ที่สุดที่เป็นไปได้ ไวยากรณ์:

Int getrandmax()

ฟังก์ชันนี้ส่งคืนค่าสูงสุดที่สามารถรับได้โดยใช้ฟังก์ชันการสร้างตัวเลขสุ่ม rand()

โดยปกติจะเป็น 32767

สร้างตัวเลขสุ่ม ไวยากรณ์:

Int แรนด์()

เมื่อเรียกด้วยพารามิเตอร์ขั้นต่ำและสูงสุดเผื่อเลือก ฟังก์ชันนี้จะสร้างตัวเลขสุ่มจนถึงและรวมพารามิเตอร์เหล่านั้นด้วย หากไม่มีพารามิเตอร์ min และ max ระบบจะส่งกลับตัวเลขตั้งแต่ 0 ถึง RAND_MAX

เพื่อให้ฟังก์ชันนี้ทำงานได้อย่างถูกต้อง ก่อนที่จะใช้งาน คุณจะต้องเริ่มต้นตัวสร้างตัวเลขสุ่มด้วยฟังก์ชัน srand()

lcg_value()

LCG ตัวสร้างตัวเลขสุ่มหลอก (PHP 4, PHP 5)

คำอธิบาย:

ลอย lcg_value (เป็นโมฆะ)

lcg_value() ส่งกลับตัวเลขสุ่มเทียมในช่วง (0, 1) ฟังก์ชันนี้จะรวมเครื่องกำเนิดไฟฟ้าสองตัวที่มี 2^31 - 85 และ 2^31 - 249 ในช่วงเวลาหนึ่ง

mt_getrandmax()

แสดงค่าสุ่มที่ใหญ่ที่สุดที่เป็นไปได้ (PHP 3 >= 3.0.6, PHP 4, PHP 5)

คำอธิบาย:

Int mt_getrandmax (เป็นโมฆะ)

แสดงค่าสูงสุดที่สามารถส่งกลับโดย mt_rand()

mt_rand()

สร้างค่าสุ่มที่ดีที่สุด (PHP 3 >= 3.0.6, PHP 4, PHP 5)

คำอธิบาย:

int mt_rand()

ตัวสร้างตัวเลขสุ่มรุ่นเก่าๆ หลายเวอร์ชันมีลักษณะที่น่าสงสัยและทำงานช้า ตามค่าเริ่มต้น PHP จะใช้ฟังก์ชัน rand() เพื่อสร้างตัวเลขสุ่ม ฟังก์ชัน mt_rand() เป็นการทดแทนที่ดี ใช้ตัวสร้างตัวเลขสุ่มที่เร็วกว่า rand() ถึง 4 เท่า และใช้ Mersenne Twister

เมื่อเรียกโดยไม่มีอาร์กิวเมนต์ min และ max ที่เป็นทางเลือก mt_rand() จะส่งกลับค่าสุ่มเทียมซึ่งอยู่ระหว่าง 0 ถึง RAND_MAX ตัวอย่างเช่น หากคุณต้องการรับค่าสุ่มระหว่าง 5 ถึง 15 ให้มองหา mt_rand (5, 15)

ตัวอย่างการใช้ mt_rand()

ผลลัพธ์ของการรันตัวอย่างนี้จะเป็นดังนี้:

1604716014
1478613278
6

ความคิดเห็น

หมายเหตุ: ในเวอร์ชันก่อน 3.0.7 พารามิเตอร์ตัวที่สองของฟังก์ชันจะระบุช่วงของตัวเลข ตัวอย่างเช่น หากต้องการรับตัวเลขสุ่มระหว่าง 5 ถึง 15 ในเวอร์ชันเหล่านี้ คุณต้องระบุฟังก์ชัน mt_rand(5, 11)

mt_srand()

ตั้งค่าเริ่มต้นของตัวสร้างตัวเลขสุ่มที่ดีที่สุด (PHP 3 >= 3.0.6, PHP 4, PHP 5)

คำอธิบาย:

โมฆะ mt_srand()

ตั้งค่าเริ่มต้นของเครื่องกำเนิดตัวเลขสุ่มโดยใช้เมล็ด ตั้งแต่ PHP 4.2.0 เป็นต้นไป seed เป็นทางเลือก และละเว้นการตั้งค่าเริ่มต้นสำหรับค่าสุ่ม

ตัวอย่างการใช้ mt_srand()

หมายเหตุ: ตั้งแต่ PHP 4.2.0 เป็นต้นไป ไม่จำเป็นต้องเริ่มต้นตัวสร้างตัวเลขสุ่มด้วย srand() หรือ mt_srand() อีกต่อไป เนื่องจากตอนนี้ดำเนินการโดยอัตโนมัติ

ในทางเทคนิคแล้ว คำว่า "ตัวสร้างตัวเลขสุ่ม" นั้นไร้สาระ เนื่องจากตัวเลขในตัวมันเองไม่ใช่การสุ่ม เช่น 100 เป็นตัวเลขสุ่มใช่หรือไม่ แล้ว 25 ล่ะ? ความหมายที่แท้จริงคือคำนี้สร้างลำดับตัวเลขที่ปรากฏแบบสุ่ม สิ่งนี้ทำให้เกิดคำถามที่ยากขึ้น: ลำดับของตัวเลขสุ่มคืออะไร? คำตอบที่ถูกต้องเพียงข้อเดียว: ลำดับของตัวเลขสุ่มคือลำดับที่องค์ประกอบทั้งหมดไม่เกี่ยวข้องกัน คำจำกัดความนี้นำไปสู่ความขัดแย้งที่ว่าลำดับใดๆ อาจเป็นแบบสุ่มหรือไม่สุ่ม ขึ้นอยู่กับว่าลำดับได้มาอย่างไร ตัวอย่างเช่น สตริงตัวเลขต่อไปนี้
1 2 3 4 5 6 7 8 9 0
ได้มาจากการพิมพ์บรรทัดบนสุดของแป้นพิมพ์ตามลำดับ ดังนั้นจึงไม่สามารถพิจารณาลำดับที่สร้างแบบสุ่มได้ แต่จะเป็นอย่างไรหากคุณได้ลำดับเดียวกันเมื่อคุณนำลูกเทนนิสที่มีหมายเลขออกจากถัง ในกรณีนี้ มันเป็นลำดับที่สร้างขึ้นแบบสุ่มอยู่แล้ว ตัวอย่างนี้แสดงให้เห็นว่าการสุ่มของลำดับขึ้นอยู่กับวิธีการได้มา ไม่ใช่ขึ้นอยู่กับตัวลำดับเอง

โปรดจำไว้ว่าลำดับตัวเลขที่สร้างโดยคอมพิวเตอร์นั้นเป็นสิ่งที่กำหนดได้: แต่ละหมายเลขยกเว้นหมายเลขแรกจะขึ้นอยู่กับตัวเลขที่อยู่ก่อนหน้านั้น ในทางเทคนิคแล้ว หมายความว่าคอมพิวเตอร์สามารถสร้างลำดับตัวเลขกึ่งสุ่มได้เท่านั้น เช่น จริงๆ แล้วมันไม่ได้สุ่มเลย อย่างไรก็ตาม ขั้นตอนนี้เพียงพอสำหรับงานส่วนใหญ่ และเพื่อความเรียบง่าย ลำดับดังกล่าวจะเรียกว่าสุ่ม วิธีการหนึ่งที่น่าสนใจมากได้รับการพัฒนาโดย John von Neumann; มักเรียกว่ารูตค่าเฉลี่ยกำลังสอง ในวิธีนี้ ตัวเลขสุ่มก่อนหน้าจะถูกยกกำลังสอง จากนั้นจึงดึงตัวเลขกลางออกจากผลลัพธ์ ตัวอย่างเช่น หากคุณกำลังสร้างตัวเลขด้วยตัวเลขสามหลัก และตัวเลขก่อนหน้าคือ 121 การยกกำลังสองจะให้ผลลัพธ์เป็น 14641 การแยกตัวเลขสามหลักตรงกลางออกจะทำให้ได้ตัวเลขสุ่มตัวถัดไปเป็น 464 ข้อเสียของวิธีนี้คือมันมีผลอย่างมาก ระยะเวลาการทำซ้ำสั้นๆ เรียกว่า วงจร ด้วยเหตุนี้ ปัจจุบันจึงไม่ได้ใช้วิธีนี้ วิธีการสมัยใหม่ในการสร้างตัวเลขสุ่มนั้นซับซ้อนกว่ามาก

ตัวเลขสุ่มใน PHP

PHP มีฟังก์ชันสองกลุ่มสำหรับการทำงานกับตัวเลขสุ่ม ภายนอกเท่านั้นที่สามารถแยกแยะได้ด้วยคำนำหน้า mt_ สำหรับฟังก์ชันทั้งหมดของกลุ่มใดกลุ่มหนึ่ง

คุณสมบัติที่เลิกใช้แล้ว
ฟังก์ชันแรนด์ ส่งกลับจำนวนเต็มระหว่างศูนย์ถึงค่า RAND_MAX (ซึ่งก็คือ 32767) สามารถมีพารามิเตอร์จำนวนเต็มทางเลือกได้สองตัว - หากระบุไว้ ตัวเลขสุ่มจะถูกสร้างขึ้นจากพารามิเตอร์ตัวแรกถึงตัวที่สอง

Echo แรนด์ (); สะท้อนแรนด์ (1,100); // สุ่มตัวเลขตั้งแต่ 1 ถึง 100

ฟังก์ชันสแซนด์ ระบุลำดับของตัวเลขสุ่มที่สร้างโดยฟังก์ชัน rand มีพารามิเตอร์ทั้งหมด - สำหรับค่าที่แตกต่างกันของพารามิเตอร์นี้ rand จะสร้างลำดับตัวเลขที่แตกต่างกัน ต้องเรียกใช้ฟังก์ชัน srand เพียงครั้งเดียวก่อนที่จะเรียกใช้ฟังก์ชัน rand ทั้งหมด ตัวอย่างการใช้งาน:

สรานด์(1288); // เริ่มต้นตัวสร้างตัวเลขสุ่มสำหรับ($i=0; $i