Neznate nekdo nejaky pekny algoritmus na generovani nahodnych cisel?
Fórum › C / C++
Nahodne cislo
Na generovanie skutocne nahodnych cisel imo algoritmus neexistuje. Pre pseudonahodne je jeden popisany na wiki
http://en.wikipedia.org/wiki/Linear_congruential_generator
A ked chces _skutocne_ nahodne cisla tak pouzi /dev/random ak si pod linuxom, problem je, ze ten subor sa rychlo minie ;). Pouziva to udaje z prakticky nahodnych zdrojov - pohyby mysi, pid procesov a pod.
To yaqwsx : To bohuzel nejde..
Tedy abych trosicku upresnil problem: pisu Tetris a tam samozrejme potrebuju generovat jak nahodne obrazce, tak nahodnou "startovni pozici". Aby to ale nebylo tak jednoduche, ten Tetris beha pod vlastnim OS, takze nemuzu pouzit systemove knihovny, jak navrhoval Erik, dokud si je nenapisu. U Tetrisu by ale nemel byt problem s tim, ze by uzivatel ne"psal", pac v tom pripade by pravdepodobne prohral, ze... Eventualne bych to nejak mohl smixovat s casem (ktery se mi ale zatim nepodarilo z BIOSu vytahnout)..
Ja jsem to delal vice mene podle tehle dvou tutorialu: http://osdever.net/bkerndev/index.php?the_id=90, http://www.osdever.net/tutorials/brunmar/tutorial_01.php.. Je to tam fakt moc pekne vysvetleny ;-)
Mno, tak nakonec z toho vylez Snake a nikoli Tetris :-)
Trosicku blbne ovladani - kdyz jsem se to ale pokousel opravit, zacalo mi ld zniceho nic hlasit segmentation fault :-(
Screeny: :smile4:
Bootovani:
A archiv se zdrojakama a obrazem diskety:
http://atlantis.kvalitne.cz/my/Snake/Snake.tar.gz
To c_coder : mezi slovy program a algoritmus je docela podstatny rozdil.
absolutni nahoda - to uz je spise filozoficky problem otazky determinismu a indeterminismu.
jde predevsim o to, aby uzivatel nemohl urcit jake cislo mu generator vyda a aby generator rozdeloval cisla relativne rovnomerne. na generator pro hru staci vyuzivani systemoveho sumu (/dev/rand)
To Zelenáč :
Ja jsem to tak nemyslel, chtel jsem rict ze nebude pro tebe rozdil jestli tu napisu algoritmus a nebo cely program
A vubec chtel jsem ti nejak pomoct.
Mel bys vedet,ze tady na foru je nekolik tomu tvemu podbnych temat.
Kdyz mas avatara Tuxe to nemuse znamet ze pouzivas Linux))) Kdyz budu mit jako avatara Jennifer Lopez bude to znamenat ze vlastnim JL ??? =)))
unsigned int rnd()
{
static unsigned int n = 1234567890;
n *= 993711;
return n;
}
Náhodné číslo v rozsaju 0-0xffffffff
Pseudonáhodne číslo využíva neusporiadanosť iracionálnych čísel.
Na zvýšenie účinnosti treba zakomponovať chaos.
Napríklad:
n = (n * 993711 + 523147) >> 16;
return n & 0xffff;
Náhodné číslo v rozsaju 0-0xffff
Radšej by som to upravil takto:
n = n * 993711 + 523147;
return n >> 16;
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
Náhodné číslo — založil Jakub Vojáček
Náhodné číslo — založil Xiaxo
Náhodné číslo — založil paking
C# Náhodné číslo (od až po) — založil Gandy
Nahodne cislo — založil Marek Čačko
Moderátoři diskuze