Šance – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Šance – Java – Fórum – Programujte.comŠance – Java – Fórum – Programujte.com

 

Gandalf
~ Anonymní uživatel
8 příspěvků
17. 6. 2012   #1
-
0
-

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?

Nahlásit jako SPAM
IP: 194.213.39.–
crazy
~ Moderátor
+10
Grafoman
17. 6. 2012   #2
-
0
-

#1 Gandalf
vygeneruješ si náhodné číslo od 0 - 3, pokud padne trojka tak ti vyjde (vrátíš) A, a když něco jiného než trojka tak B. to je přesně 1:3

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
TheOndrap+2
Super člen
17. 6. 2012   #3
-
0
-

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 

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
sleepy0
Stálý člen
21. 6. 2012   #4
-
0
-

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.

Nahlásit jako SPAM
IP: 213.215.67.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 33 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý