Prodej multi-eshopu DomaciCentrum.cz - čistá marže 750 000 Kč / rok
Zobrazují se odpovědi 1 až 6 z 6

Náhodný výraz z pole

  1. Zdravím, řeším momentálně jeden problém a ten spočívá v tom, že nevím jak vytáhnout náhodně nějaký výraz z array s procentuálním potenciálem, rozepíšu.

    Mám array kde jsem explodoval čárku (,) z proměnné, třeba $test = "a,b,c";
    vytáhnout něco náhodně je jednoduché přes count a mt_rand, ale potřebuji nějak vytáhnout náhodně s tím, že možnost vytažení 'a' bude 60%, možnost vytažení 'b' bude 30% a možnost vytažení 'c' bude 10%. Nastavení kolik jaký výraz bude mít procentuální možnost vytažení bych nastavoval ručně nejspíše přes switch.

    Díky moc za rady.

  2. Happy Robot :]

    Co se právě děje na Webtrhu?

  3. No není to sice nejhezčí řešení, ale dej random třeba 1-10 a 123456 bude "a" 789 bude "b" a 10 bude "c" ... určitě to asi půjde i nějak líp napsat, než takovou prasárnu, ale fungovat by to mělo.

  4. ehh blbost :P
    Naposledy upravil unlucky : 16.01.2012 v 21:40

  5. zaprve nedela se to pres count() a mt_Rand ale pres array_rand();
    PHP kód:
    $arrayVar explode(',',$zdroj);
    echo 
    $arrayVar[array_rand($arrayVar)]; 
    jinak kdyz budes mit u jedne hodnoty vic moznych klicu, zamichas tim pravdepodobnosti, takze bych to resil druhym polem kde bude ruzny pocet klicu odkazovat na jednu hodnotu ve spravnych pomerech, slo by to udelat v pohode strojove, nicmene nemam cas psat ti tu cely kod abys to jen zkopiroval a slepe pouzil, takze to zkus treba i sam ;)

  6. Aleši díky, to mě vůbec nenapadlo takto to udělat.. jdu na to, super!

    ---------- Příspěvek doplněn 16.01.2012 v 22:03 ----------

    Jop, script mám jede to suprově.

  7. Udělal bych to přes překladovou tabulku:

    PHP kód:
    $draw = new Weighted_Draw;
    echo 
    $draw->choose();

    class 
    Weighted_Draw {
        protected 
    $weights = array(
            
    => 'Choice 1, 60%',
            
    61 => 'Choice 2, 30%',
            
    91 => 'Choice 3, 10%'
        
    );
        protected 
    $draw;
        protected 
    $choice;
        
        public function 
    __construct() {
            
    krsort($this->weights);
        }
        
        public function 
    choose() {
            return 
    $this->draw()
                ->
    translate()
                ->
    lastChoice();
        }
        
        public function 
    lastChoice() {
            return 
    $this->choice;
        }
        
        protected function 
    draw() {
            
    $this->draw rand(1100);
            return 
    $this;
        }
        
        protected function 
    translate() {
            
    $this->choice NULL;
            
    reset($this->weights);
            
            foreach(
    $this->weights AS $lowerLimit => $choice) {
                if(
    $lowerLimit <= $this->draw) {
                    
    $this->choice $choice;
                    break;
                }
            }
            
            return 
    $this;
        }


Podobná témata

  1. pole s diakrtikou
    By Damian in forum PHP
    Odpovědí: 5
    Poslední příspěvek: 24.10.2011, 14:00
  2. String ve tvaru pole do skutečného pole
    By Michal Seidler in forum PHP
    Odpovědí: 6
    Poslední příspěvek: 07.10.2011, 19:01
  3. Pole?
    By JakubHoudek in forum Drupal
    Odpovědí: 1
    Poslední příspěvek: 20.01.2010, 12:53
  4. Pole RAID
    By jamesm in forum HW
    Odpovědí: 5
    Poslední příspěvek: 21.07.2009, 21:00
  5. Odpovědí: 5
    Poslední příspěvek: 02.12.2008, 21:09
Hostujeme u Server powered by TELE3