Předmět Autor Datum
Pomocí rand asi ne. Můžeš si udělat pole s jednotlivejma prvkama a rozsahem jejich pravděpodobností.
Wikan 11.05.2009 15:28
Wikan
jestli to bude pole nebo tabulka v mysql je mi jedno, mě by zajímal ten mechanismus pravděpodbnosti
Banshee 11.05.2009 15:36
Banshee
Vygeneruješ náhodné číslo a koukneš se do pole, k jakému prvku patří.
Wikan 11.05.2009 15:43
Wikan
to ano ale potřeboval bych aby třeba 1/3 prvků měla 10% šanci na vylosovnání takovu "šanci" bych pot…
Banshee 11.05.2009 15:58
Banshee
A v čem je problém? Prostě to takhle dáš do tabulky. Příklad: 1 .. 0,00-0,09 2 .. 0,10-0,19 3 .. 0,2…
Wikan 11.05.2009 16:15
Wikan
tak to mam v tabulce a ted jakou funkcí náhodně vyberu 3 z 50 tak aby to odpovídalo pravděpodobnosti…
Banshee 11.05.2009 16:41
Banshee
Vygeneruješ si náhodný číslo a pak se podíváš do tabulky, ke které hodnotě to patří. Neber to nijak…
Wikan 11.05.2009 17:25
Wikan
Neber si to osobně ale nepochopil si co sem chtěl a už nevim jak jinak to vysvětlit.
Banshee 11.05.2009 19:40
Banshee
On to pochopil len ty stale nechapes ze ked chces vacsiu pravdepodobnost tak tomu prirad vacsi "usek…
MM.. 11.05.2009 19:42
MM..
:-D Tak já nevim asi sem něco přehlíd, teď už tomu rozumim. Asi sem chtěl vidět něco jinýho a heldal…
Banshee 11.05.2009 19:52
Banshee
No ved preto :-) takze mozes dalej programovat :-) Inac to riesenie samozrejme predpoklada ze ta fun…
MM.. 11.05.2009 19:54
MM..
Místo tabulky lze též použít také pole, IMHO by to bylo jednodušší <?php $array = array(1,1,1,1,1,1…
marekdrtic 11.05.2009 19:57
marekdrtic
Mas nejak moc rad cislo 21? Lebo rozsah 0-20 je 21 cisel a rozmyslat v 1/21-tinach mi pride dost div…
MM.. 11.05.2009 20:03
MM..
což že to bude celočíselné vim :) mě se spíš než pole bude hodit tabulka, budu tam mít hodně kritéri… poslední
Banshee 11.05.2009 20:10
Banshee
Uděláš si tabulku, tu tabulku si ručně nebo skriptem vyplníš daty např takto: random prirazeni 0 1…
marekdrtic 11.05.2009 19:56
marekdrtic

On to pochopil len ty stale nechapes ze ked chces vacsiu pravdepodobnost tak tomu prirad vacsi "usek" napriklad. Da sa to riesit viac sposobmi, matematickymi prepoctami namiesto tabulky, atd. Ked nechapes toto tak uz fakt neviem ze jak chces programovat zlozitejsie veci.
1: 0-0,01
2: 0,01-0,02
3: 0,02-1

cislo 3 ma vacsiu pravdepodobnost ako 1,2

No ved preto :-) takze mozes dalej programovat :-) Inac to riesenie samozrejme predpoklada ze ta funkcia rand ma rovnomerne rozdelenie pravdepodobnosti (urcite ma).

Tip: Sucet tych pravdepodobnosti kazdeho cisla musi byt 100%, a teda kazde % pravdepodobnosti bude znamenat rozsah 0,01 v tabulke. Pokial to mas rozdelene medzi tie cisla nejak logicky, je jednoduchsie to riesi prepoctom a nie tabulkou.

P.S. pozeram ze fcia rand v PHP vracia cele cisla a nie desatinne ako v C, takze v PHP si zvol rozsah napr. 0-99 (vcetne oboch) a budes to mat po percentach.

Mas nejak moc rad cislo 21? Lebo rozsah 0-20 je 21 cisel a rozmyslat v 1/21-tinach mi pride dost divne. Skor pouzit rozsah 0-99. Len neviem ako dobre PHP rand robi tie okrajove cisla (0 a 99), ci maju rovnaku pravdepodobnost ako tie ostatne. Toto je v PHP dost dementne (v C je to rozumnejsie). K tomu by bolo treba precitat si nejaky poriadny help k PHP, alebo pouzit rozsah 0-999999 a vydelit to 10000, potom budu mat vsetky rovnaku pravdepodobnost.

Uděláš si tabulku, tu tabulku si ručně nebo skriptem vyplníš daty např takto:

random   prirazeni
0        1
1        1
2        2
3        2
4        2
5        2
6        2
7        2
8        2
9        3
10       3
11       3
12       3
13       3
14       3
15       3
16       3
17       3
18       4
19       4
20       4

Dej si do klobouku 20x číslo 1, 5x číslo 2 a 1x číslo 3. Pravděpodobnost, že vytáhneš trojku je mizivá, zatímco jedničku vytáhneš skoro pokaždé, občas pětku.

A skript bude vypadat následovně:

<?php
$rand = Rand(0, 20);
$query = mysql_query("SELECT prirazeni FROM `tabulka` WHERE `random` = '$rand' LIMIT 1");
$row = mysql_fetch_row($query);
echo "Vytáhnul sis číslo ".$row[0]."!";
?>

Zpět do poradny Odpovědět na původní otázku Nahoru