Dobrý den. Potřeboval bych poradit jak na to, aby když mám třeba dvě hodnoty A a B, aby jednu z nich program náhodně vypsal, ale jednu s větší šancí, třeba 1:3 že program vypíše právě hodnotu A?
Fórum › Java
Šance
Jenom čistě "statisticky" a aby bylo matimatice učiněno za dost dodávám, že to náhodné číslo by's měl vygenerovat v rovnoměrném rozložení <1;3>, celá čísla a potom testovat, aby to bylo OK
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
Podla mna je omnoho jednoduchsie si vytvorit take intervali ze {I1, I2, I3, ..., In} a ze <0,1> = I1 zjednotenie I2 ... In a pre kazde 1<= k,l <=n kde k != l plati: Ik prienik Il = 0. Ik bude predstavovat pravdepodobnost padnutia k-teho prvku (napr. p_k%). Potom spustis random() alebo inak vygenerujes nahodne cislo od <0,1> (samozrejme s rovnomernim rozlozenim). To padne do urciteho intervalu ktoremu bude prisluchat urcite pismeno, cislo, Objekt. Cize by som to videl nasledovne:
.
.
.
public Object getRandObject(Object[] objs, double[] p){
double skalovanie = spocitaj(p); //spocitam vsetky pravdepodobnosti dohromady
p = skaluj(p,skalovanie); metoda ktora my to cele preskaluje aby sucet pravdepodobnosti bol 1.
double[] interval = vytvorIntervaly(p);
/*
* Metoda funguje tak ze interval[0]=0 interval[1]=p[0] interval[2]=p[1]+p[2] ... .
* To vytvori urcite hranice.
*/
double rand = Math.random(); // nahodne cislo mozes vygenerovat samozrejme aj inak
//alebo ho inak ziskat
int i = indexIntervalu(interval, rand);
// Metoda vrati index intervalu tak aby platilo interval[i]<= rand < interval[i+1]
return objs[i]; //Vrati i-ty objekt, ktory mal urcitu pravdepodobnost ze sa vrati p[i]
}
.
.
.
Tie indexy este skontroluj, lebo som nad tym vemy neuvazoval. Za pripadne chyby, aj gramaticke, sa ospravedlnujem.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Šance pro frontend developera (extJS) — založil teeva
Šance pro začínající php programátory — založil jakduch
Šance pro začínající php programátory — založil jakduch
Šance pro nadějné redaktory (hry, progaming a vše kolem hw&sw) — založil dchecker
Moderátoři diskuze