วันพุธที่ 14 มกราคม พ.ศ. 2558

PHP - ฟังก์ชันสุ่มตัวเลข

ในภาษา PHP มีการใช้ฟังก์ชันเกี่ยวกับการสุ่มตัวเลข 2 แบบได้แก่ แบบ libc ซึ่งจะใช้ฟังก์ชัน
rand ( ) และการใช้ฟังก์ชันสุ่มด้วยเทคนิค Mersenne Twister ที่สร้างค่าสุ่มได้เร็วกว่า libc ถึง 4 เท่า
โดยใช้ฟังก์ชัน mt_rand ( ) ทั้งสองฟังก์ชันจะให้ค่าสุ่มเป็นเลขจำนวนเต็มที่กำหนดช่วงข้อมูลได้
หากโปรแกรมใดต้องการสร้างค่าสุ่ม ควรจะใช้คำสั่งเพื่อเริ่มต้นการสร้างตัวเลขสำหรับการสุ่ม
โดยใช้ฟังก์ชัน Seed random number generator ในตอนต้นของ page คำสั่งการเริ่มการสร้าง
ตัวเลขสุ่มนี้ใช้เพียงครั้งเดียวในแต่ละ page แล้วสามารถใช้ฟังก์ชัน rand( ) ได้หลายครั้ง หากไม่ใช้คำ
สั่งเริ่มต้นการสร้างค่าสุ่มจะทำให้ตัวเลขสุ่มเมื่อโปรแกรมทำงานแต่ละรอบได้ค่าที่ซ้ำกัน ฟังก์ชันที่ใช้
เริ่มการสร้างค่าสุ่มคือ srand( ) และ mt_srand( )
การใช้ srand หรือ mt_srand ต้องการ parameter เป็นตัวเลขเพื่อกำหนดค่าตั้งต้นของการ
สุ่ม ซึ่งเทคนิคโดยทั่วไปเราจะใช้ค่าที่ไม่เหมือนกันในแต่ละครั้งที่เพจถูกเรียกให้ทำงาน ซึ่งมักจะดึงเอา
เวลา timestamp ในขณะที่เพจถูกเรียกใช้งาน ที่มีความละเอียดสูง ซึ่งมีฟังก์ชันสนับสนุนคือ
microtime( ) นำมาใช้เป็นค่าเริ่มต้น ซึ่งมักจะใช้ code ดังนี้
srand((float)microtime() * 1000000);
ใน PHP version 4.2.0 เป็นต้นไปไม่จำเป็นต้องเขียนคำสั่ง srand หรือ mt_srand เนื่องจาก
PHP engine จะดำเนินการเองโดยอัตโนมัติ

รายการฟังก์ชันเกี่ยวกับการสุ่มตัวเลขแสดงในตารางต่อไปนี้

int mt_getrandmax ( ) ให้ค่าสุ่มสูงสูงสุดที่สามารถทำได้
void mt_srand ( ) เริ่มการสร้างค่าสุ่มในโปรแกรม
int mt_rand ( [int min, int
max])
สร้างตัวเลขสุ่มโดยสามารถกำหนดค่าสูงสุด ต่ำสุดได้หากไม่กำหนด
จะให้ค่าระหว่าง 0 ถึง ค่าสูงสูดที่สามารถทำได้ (ใช้ฟังก์ชัน
getrandmax หากต้องการทราบค่าสูงสุดที่สามารถทำได้)
int getrandmax ( ) ให้ค่าสุ่มสูงสูงสุดที่สามารถทำได้
int rand ( ) สร้างตัวเลขสุ่ม
void srand ( ) เริ่มการสร้างค่าสุ่มในโปรแกรม

ฟังก์ชันเกี่ยวกับการสร้างตัวเลขสุ่ม สามารถนำไปใช้ประโยชน์ได้เช่น การสุ่มรายการข้อมูล
ขึ้นมาแสดง ซึ่งข้อมูลนั้นอาจจะเป็นบทความทีน่าสนใจ รูปภาพ banner โฆษณา ฯลฯ เป็นต้น (ตัวอย่าง
ในหัวข้อ 5.2 บทที่ 5) และนอกจากนี้ยังอาจใช้ฟังก์ชันการสุ่มเพื่อสร้างข้อมูลสำหรับการทดสอบขึ้น
อาจเป็นข้อมูลที่สร้างในระหว่างการทดสอบโปรแกรมหรือสร้างข้อมูลตัวอย่างเก็บลงในไฟล์ข้อมูลหรือ
ฐานข้อมูลสำหรับใช้ทดสอบ หรืออาจสุ่มเพื่อสร้างสภาวะจำลองการทำงาน เช่นสุ่มเวลาที่จะมีข้อมูล
ลำดับถัดไปเข้ามา เป็นต้น

ตัวอย่าง      แสดงการสุ่มข้อมูลตัวเลขที่อยู่ระหว่าง 25-100 จำนวน 50 ค่า แสดงผลโดยมี
เครื่องหมาย comma คั่น
<?
mt_srand();
for ($i=0; $i<50; $i++) {
echo $comma, mt_rand (25,100);
$comma = ', ';
}
?>

ไม่มีความคิดเห็น:

แสดงความคิดเห็น