PHP Random Number+String สุ่มตัวเลขตัวอักษรหรือตัวหนังสือไม่ซ้ำอย่างง่าย

PHP Random Number+String สุ่มตัวเลขตัวอักษรหรือตัวหนังสือไม่ซ้ำอย่างง่าย

PHP CODE FATHER โปรแกรมช่วยสร้างโค้ด โปรเจ็ค PHP+MySQL+Boostrap ใช้งานง่าย ๆ


การสุ่มตัวเลข หรือ ตัวอักษร แบบไม่ให้ซ้ำกันในแ่ต่ละรอบนี้ คิดว่าคงจะได้เจอะเจอกันอย่างแน่นอน สมัยเรียนผมเองก็เจอมาเหมือนกันครับ อาจารย์ให้ทำโค้ดระบบสุ่ม หรือ Random ตัวเลขสิบตัว 0 - 9 โดย loop ทั้งหมดสิบรอบ ให้แต่ละรอบตัวเลขผลลัพธ์ต้องออกมาไม่ซ้ำกัน คือ เขาสอนเกี่ยวกับโครงสร้างข้อมูลแบบลำดับมาแล้ว ( data structure) ก็ให้เราทำซะงั้น สรุปว่าทั้งห้องไม่มีใครทำได้เลย อาจารย์ก็มาเฉลยวิธีการให้ ประมาณนี้ครับ 

  1.  สุ่มตัวเลขมา 1 ตัว
  2. เก็บตัวเลขที่สุ่มได้ ใส่ไว้่ในตัวแปร array จากนั้นก็ทำการสุ่มตัวเลขรอบใหม่
  3. เอาตัวเลขใหม่ที่สุ่มได้ ไปเช็คกับตัวเลขที่มีใน array ว่ามีหรือยัง ถ้ายังไม่มีก็เพิ่มตัวเลขที่สุ่มได้เข้าไปเก็บไว้ใน array แต่ถ้ามีอยู่แล้ว ก็ทำการสุ่มตัวเลขใหม่ loop จนได้ค่าทั้งหมด (ซึ่งไม่รู้ว่าทั้งหมดมันกี่รอบ)
  4. เมื่อได้ค่าไม่ซ้ำครบแล้วก็ทำการแสดงผลค่าใน array ออกมา

คิดดูสิครับว่านักเรียนโปรแกรมมือใหม่อย่างเรา ๆ ใครจะไปคิดและทำได้ขนาดนั้น
อย่างมากที่คิดได้ตอนนั้นก็ใช้ if เช็คว่าตัวนี้มีหรือยังแค่นั้นหล่ะ

จนเรียนจบออกมาผมเองก็ยังติดใจไอ้ระบบสุ่มตัวเลขนี้ไม่หาย มันน่าจะมีวิธีที่ทำได้ง่าย ๆ สิน่า
อันนี้ไม่เอาฟังก์ชั่นสำเร็จรูปนะครับ เอาแบบคิดเอง สร้างเองประมาณนั้น ก็เลยมาลองเขียนเล่น ๆ ดู ก็ได้ผลเป็นที่น่าพอใจแบบนี้ครับ

สุ่มตัวเลขแบบไม่ซ้ำ

สุ่มตัวหนังสือ หรือ ตัวอักษาไทยก็ได้อังกฤษก็ได้นะครับ แบบไม่ซ้ำกันเลย

โค้ด php random สุ่มไม่ซ้ำ

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP Random Number+String สุ่มตัวเลข+ตัวอักษรหรือตัวหนังสือไม่ซ้ำอย่างง่ายด้วย PHP</title>

<?
for($a==1;$a<10;$a++){ // จำนวนรอบที่ต้องการทดสอบ หรือ สุ่ม
$number='0123456789'; // ตัวแปรตัวเลข ที่จะเอาไปสุ่ม
//$number="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // ตัวแปรแบบตัวอักษรภาษาอังกฤษ ที่จะเอาไปสุ่ม
for($i==1;$i<5;$i++){ // จำนวนหลักที่ต้องการสามารถเปลี่ยนได้ตามใจชอบนะครับ จาก 5 เป็น 3 หรือ 6 หรือ 10 เป็นต้น
$random=rand(0,strlen($number)-1); //สุ่มตัวเลข
$cut_txt=substr($number,$random,1); //ตัดตัวเลข หรือ ตัวอักษรจากตำแหน่งที่สุ่มได้มา 1 ตัว
$result.=substr($number,$random,1); // เก็บค่าที่ตัดมาแล้วใส่ตัวแปร
$number=str_replace($cut_txt,'',$number); // ลบ หรือ แทนที่ตัวอักษร หรือ ตัวเลขนั้นด้วยค่า ว่าง
}
$i=0; // ตั้งค่าให้ $i ใหม่ เริ่มต้นที่ 0
echo $result."<br>"; // แสดงค่า
$result=''; // ล้างค่าตัวแปรออก เพื่อรับค่าใหม่ในรอบต่อไป
}
?>

หลักการหรือวิธีการก็ง่าย ๆครับ ไม่ยุ่งยากอะไรเลย โดยเราจะเก็บค่าที่ต้องการจะเอามาสุ่ม (ตัวเลข หรือ ตัวอักษร) ไว้ในตัวแปรก่อนนะครับ จากนั้นก็
  1. สุ่มตัวเลข สมมุติรอบแรกสุ่มได้ 5 นะครับ
  2. ทำการตัดตัวเลขลำดับที่ 5 มา 1 ตัว
  3. เก็บค่าที่ตัดมาได้ไว้ในตัวแปรสำหรับเอาไปใช้งาน
  4. ตัด หรือ ลบ ตัวเลขตัวนั้นออกจากตัวแปร จากสมาชิกในตัวแปรที่มี 10 ตัว ก็จะเหลือแค่ 9 ตัว รอบต่อไปสุ่มยังไงก็ไม่ซ้ำแน่นอน (ก็เราตัดตัวนั้นออกไปแล้วนี่...อิอิ)
ก็จะได้ผลลัพธ์ตามที่เราต้องการครับ สามารถเอาไปประยุกต์เพื่อใ้ช้งานต่อได้ ไม่ว่าจะเป็นการยืนยันตัวตน ตามที่เห็นตามเว็บทั่ว ๆ ไป ที่ก่อนโพสต้องกรอกระหัสยืนยันนะครับ หรือ จะเอาไปใช้งานอย่างอื่น ๆ ก็แล้วแต่สถาณการณ์ครับ

โค้ดด้านบนนี้ทำงานได้เร็วมาก เนื่องจากแต่ละรอบจะได้ตัวเลขที่ไม่ซ้ำออกมาเลย ลองเอาไปเทสกันดูนะครับ หากสงสัยตรงไหนก็ฝากข้อความไว้ได้เลยครับผม...

ย้อนกลับ กลับหน้าแรก