Generování náhodných čísel - MATLAB
Mam vektor cisel v = [1 2 3 4 5 6 7 8 9 10 11]... Potrebuju je nahodne generovat a to tak, ze cislo 1 ma pravdepodobnost vyskytu 1, cislo 2 ma pravdepodobnost vyskytu 0.9, cislo 3 ma pravdepodobnost vyskytu 0.8... az cislo 11, ktere ma pravdepodobnost vyskytu 0.
a ucebnicu vam nedali?
Inac to tvoje zadanie je IMHO nezmysel. Nemozes mat jedno cislo s pravdepodobnostou vyskytu 1 to by sa predsa muselo vyskytovat vzdy t.j. generoval by si len to jedno.
Sucet pravdepodobnosti vyskytu vsetkych cisel musi byt rovny 1.
Tak samozrejme bez cisla 1 a 11, ktere ma nulovou pravdepodobnost. Ucebnic mam na matlab pozehnane. Tohle je o pristupu k reseni problemu, da se vyresit vicero zpusoby. Tak jako mas spoustu generatoru pseudonahodnych cisel s normalnim rozdelenim, tak se dle meho nazoru da take nejak vyresit i toho a pokud bych prisel na sve reseni, tak s tim tady neotravuju. Vzdy me dostanou "rady" to vam nedali ucebnici... Ucebnic je na vsechno spousty ne? tak proc to tady vlastne nezavrou...
Nemoze to byt bez cisla 1 a 11, sucet pravdepodobnosti musi byt 1.
nemozes mat takto zadefinovane javy s pravdepodobnostou vyskytu 0,9 a 0,8 a 0,7 atd ptz ich sucet neni 1.
To je akokeby si povedal ze ked hodim mincu tak na 90% padne znak, na 80% padne orol, a na 70% to ostane stat na hrane. Sam uznas ze je to zadanie kravina.
P.S. ked to mas do skoly tak sem opis to zadanie presne tak jak vam ho zadali.
... aby som ta aj naviedol na mozne riesenie: napr. mozes si vygenerovat nahodne cislo s rovnomernym rozdelenim (napr. z rozsahu 0-1) a ten rozsah rozdelit potom podla toho jake chces mat ty pravdepodobnosti, napr. ak by som sa mal rozhodovat len medzi 2 cislami a jedno by malo mat pravdepodobnost 80% a druhe 20% (vsimni si ze sucet je 1), tak by som napisal do nejakeho programu nieco ako:
X=rand();
if(X<0.8) Vystup=prve_cislo;
else Vystup=druhe_cislo;
Na 11 cisel a do formatu matlabu si to prerob sam. Poiuzitie rand a if je to jedno z moznych rieseni, urcite existuje aj kopa inych.
S tim, ze soucet pravdepodobnosti musi byt 1 souhlasim. Ale pokud vse dobre chapu, tak ja mam na mysli rozdeleni nahodne veliciny. Tzn. jako je generator v matlabu na normalni rozdeleni randn, kdy kazde hodnote na ose x je prirazena urcita pravdepodobnost, tak jsem mel na mysli kdy ja tu pravdepodobnost rozlozeni mam vlastne takto sestupnou (polovina trojuhelniku). Tzn. aby se nahodne generovali cisla s danou pravdepodobnosti. Tzn., že 2 se bude vyskytovat nejcasteji, 3 mene casto atd. Jestli jsem neco spatne pochopil, tak se omlouvam za moji blbost. Jinak je to ze zadani skolniho projektu, ale to me tak napadlo na okraj, jak se da vlastne toto udelat a jestli teda vubec.
som ti napisal ze jak mozes pomocou nahodneho cisla rovnomernej pravdepodobnosti (rand()) urobit to co chces. v tvojom pripade tam za tym if bude este 9x elsif a budes mat to co si chcel v zadani (samozrejme s pravdepodobnostami takymi aby sucet bol 1). cisla u podmienok if a elsif zavisia od tych tvojich pravdepodobnosti vyskytu.
Náhodou som natrafil na túto debatu. Riešim problém, v ktorom sa mi má vytvoriť n náhodných čístel z intervalu 0.02-0.3. Pričom n je 140. Neviem ako to mám zapísať aby mi hádzalo tie čísla náhodne len z toho rozmedzia.
no napriklad tak ze budes generovat nahodne cisla od 0.0-2.98 (na to tam bude urite rovno funkcia)
a ku kazdemu potom pripocitas 0.02