ขอวิธี random ตัวเลข ไม่ให้ออกมาซ้ำกันทีครับ

เริ่มโดย RaulGonzales, 06 มกราคม 2009, 08:00:14

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

RaulGonzales

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

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

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

ให้สุมมาเป็นเเบบนี้นะครับเลขอยู่ในตารางต้องไม่ซ้ำกัน  :-*
ลงประกาศ ซื้อ,ขาย,เช่า,บ้าน,คอนโด,ที่อยู่ กับ www.properlive.com

Newbies

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

$array=range(1,4);
shuffle($array);




EAK099

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

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

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

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

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

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

ดังนั้น ทุก ๆ รอบที่ random จำนวนของ อะเรย์ จะลดลงไปเรื่อย ๆ
http://www.lovemelovemyweb.com บันทึกการเดินทางท่องเที่ยวไปเรื่อย ๆ ของผม

siamjung

ลอง 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 <- สมัยก่อน

[direct=https://www.youtube.com/watch?v=2LxLC93Q1rA]Indicator สัญญาณเทรดคมๆ[/direct]

[direct=https://play.google.com/store/apps/details?id=com.itwetrade.basictrade]App เรียนเทรดพื้นฐาน[/direct]

RaulGonzales

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

ioff

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

www.thaihoro.co.cc

tcool

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

ขอบคุณมากครับ