ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingขอวิธี random ตัวเลข ไม่ให้ออกมาซ้ำกันทีครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ขอวิธี random ตัวเลข ไม่ให้ออกมาซ้ำกันทีครับ  (อ่าน 10467 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
RaulGonzales
สมุนแก๊งเสียว
*

พลังน้ำใจ: 22
ออฟไลน์ ออฟไลน์

กระทู้: 721



ดูรายละเอียด
« เมื่อ: 06 มกราคม 2009, 08:00:14 »

ผมใช้ rand(1,4) เเต่อยากให้มันสุ่มออกมาทุกเลขโดยไม่ซ้ำกันนะครับ

เช่นผมจะทำตาราง

1  |  4
--------
2  |  3

ให้สุมมาเป็นเเบบนี้นะครับเลขอยู่ในตารางต้องไม่ซ้ำกัน  Kiss
บันทึกการเข้า

ลงประกาศ ซื้อ,ขาย,เช่า,บ้าน,คอนโด,ที่อยู่ กับ www.properlive.com
Newbies
สมุนแก๊งเสียว
*

พลังน้ำใจ: 42
ออฟไลน์ ออฟไลน์

กระทู้: 554



ดูรายละเอียด
« ตอบ #1 เมื่อ: 06 มกราคม 2009, 10:21:53 »

ใช้ shuffle เอาก็ได้ครับ ถ้าจะเอาแบบนั้น

โค๊ด:
$array=range(1,4);
shuffle($array);
บันทึกการเข้า



EAK099
คนรักเสียว
*

พลังน้ำใจ: 135
ออฟไลน์ ออฟไลน์

กระทู้: 138



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 06 มกราคม 2009, 12:21:07 »

ภาษาเขียนละกัน ไม่ได้เขียนโปรแกรมนาน ลืมไปหมดแล้ว

ตัวแปรแบบ อะเรย์ มีค่า A[1], A[2], A[3], A[4];

Random จาก อะเรย์ที่ว่านี้

เมื่อ Random ได้แล้ว ให้ ดึงอะเรย์ตำแหน่งที่ได้นั้น ออกมา

แล้วก็ Random ต่อ จนตำแหน่งสุดท้าย ไม่ต้อง Random ครับ

หัวใจสำคัญอยู่ที่ random ได้แล้ว ดึงมันออกมาด้วยครับ เมื่อ random รอบต่อไป ค่านั้นก็จะไม่มีโอกาสที่จะถูกสุ่มอีกต่อไป

ดังนั้น ทุก ๆ รอบที่ random จำนวนของ อะเรย์ จะลดลงไปเรื่อย ๆ
บันทึกการเข้า

http://www.lovemelovemyweb.com บันทึกการเดินทางท่องเที่ยวไปเรื่อย ๆ ของผม
siamjung
Verified Seller
ก๊วนเสียว
*

พลังน้ำใจ: 25
ออฟไลน์ ออฟไลน์

กระทู้: 419



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 06 มกราคม 2009, 13:49:27 »

ลอง class นี้ดูครับจะได้ค่าที่ไม่ซ้ำ เพราะ oop เก็บค่าแบบ obj สำหรับตัวที่ random เอาไว้แล้วส่วนใหญ่ที่ลองไม่มีซ็ำค่าเลย จะ random กี่จำนวนก็ได้ลองประยุกข์ดูครับ

<?php
class UniquelyRandom {

   // private static $alreadyGenerated = array();
 var $alreadyGenerated = array(); // สำหรับ php 4 จะใช้ static ไม่ได้
   
    function urand($min = NULL, $max = NULL)
    {

        $range = ($min) && ($max) ? ($max - $min) + 1 : NULL;

        do{
            $randValue = ($range) ? rand($min, $max) : rand();
            $key = md5($randValue);
            if(count($rangeList) == $range) return NULL;
            if($range) $rangeList[$key] = NULL;
        //}while(self::$alreadyGenerated[$key]);
      } while($this->alreadyGenerated[$key]) ; // สำหรับ php4
        unset($rangeList);
   
        //self::$alreadyGenerated[$key] = $randValue;
      $this->alreadyGenerated[$key] = $randValue ;
        return $randValue;
    }
}


?>

เวลาเรียกใช้อีกไฟล์ก็
<?php
include_once($root_path.'includes/uniqueRandom.class.php') ;
$Rand = new UniquelyRandom ;
$count = 5 ;

$getran = $Rand->urand(1,$count) ;

echo $getran ; // ดูผล

?>
บันทึกการเข้า

งดรับงาน custom coding เตรียมพบบริการใหม่เร็วๆนี้

รับทำ PHP หรือปรับระบบระดับ bigbig เน้น cache คนเข้าแบบกระฉูดๆ <- สมัยก่อน

KendoUI,Ajax,Json,Custom Framework,JqueryUI,Adodb,Memcache,Smarty <- สมัยก่อน

Indicator สัญญาณเทรดคมๆ

App เรียนเทรดพื้นฐาน
RaulGonzales
สมุนแก๊งเสียว
*

พลังน้ำใจ: 22
ออฟไลน์ ออฟไลน์

กระทู้: 721



ดูรายละเอียด
« ตอบ #4 เมื่อ: 06 มกราคม 2009, 19:50:36 »

ขอบคุณทุกๆคำตอบนะครับ  Cheesy Cheesy
บันทึกการเข้า

ลงประกาศ ซื้อ,ขาย,เช่า,บ้าน,คอนโด,ที่อยู่ กับ www.properlive.com
ioff
ก๊วนเสียว
*

พลังน้ำใจ: 5
ออฟไลน์ ออฟไลน์

กระทู้: 275



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 06 กุมภาพันธ์ 2009, 13:51:41 »

กำลังติดตัวนี้อยู่ มาค้นดูเลยเจอแนวทาง  ขอบคุณมากนะค่ะ  Smiley
บันทึกการเข้า

tcool
ก๊วนเสียว
*

พลังน้ำใจ: 8
ออฟไลน์ ออฟไลน์

กระทู้: 278



ดูรายละเอียด
« ตอบ #6 เมื่อ: 06 กุมภาพันธ์ 2009, 14:04:15 »

ขอเก็บไปเป็นความรู้ด้วยครับ

ขอบคุณมากครับ
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์