Zadejte hledaný výraz...

Náhodný výraz z pole

Denis Ulmann
verified
rating uzivatele
(9 hodnocení)
16. 1. 2012 21:28:34
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.
16. 1. 2012 21:28:34
https://webtrh.cz/diskuse/nahodny-vyraz-z-pole/#reply719390
Petr Vojáček
verified
rating uzivatele
(6 hodnocení)
16. 1. 2012 21:32:24
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.
16. 1. 2012 21:32:24
https://webtrh.cz/diskuse/nahodny-vyraz-z-pole/#reply719389
unlucky
verified
rating uzivatele
(16 hodnocení)
16. 1. 2012 21:33:26
ehh blbost :P
16. 1. 2012 21:33:26
https://webtrh.cz/diskuse/nahodny-vyraz-z-pole/#reply719388
hm
verified
rating uzivatele
(20 hodnocení)
16. 1. 2012 21:38:10
zaprve nedela se to pres count() a mt_Rand ale pres array_rand();
$arrayVar = explode(',',$zdroj);
echo $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 ;)
16. 1. 2012 21:38:10
https://webtrh.cz/diskuse/nahodny-vyraz-z-pole/#reply719387
Denis Ulmann
verified
rating uzivatele
(9 hodnocení)
16. 1. 2012 21:46:05
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ě.
16. 1. 2012 21:46:05
https://webtrh.cz/diskuse/nahodny-vyraz-z-pole/#reply719386
Udělal bych to přes překladovou tabulku:
$draw = new Weighted_Draw;
echo $draw->choose();
class Weighted_Draw {
protected $weights = array(
1 => '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(1, 100);
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;
}
}
17. 1. 2012 10:14:02
https://webtrh.cz/diskuse/nahodny-vyraz-z-pole/#reply719385
Pro odpověď se přihlašte.
Přihlásit