Generování náhodných čísel které se neopakují
Zdravím,
Potřeji regenerátor náhodných čísel, však aniž by si vygenerované hodnoty opalovaly. Tedy řečeno jinak řadu čísel v daném intervalu však skládany libovolně.
Prosím o obecnou syntaxy jak toto napsat, nebo přímo v jazyce visual basic.
Přemýšlel jsem nad tím ale moje metoda by byla asi nadměrně náročná jak pro psaní tak z hlediska optimalizace.
Děkuji všem
Udelej si pole po sobe jdoucich cisel.
Pak je pomocí generátoru náhodných čísel přeházej.
Po každé vygenerované hodnotě si zkontroluješ, zda už nebyla vygenerovaná a případně ji vygenerovat znovu. Pokud bys problém popsal podrobněji, tak by se dal vymyslet i lepší algoritmus.
Ano přesně o tom jsem uvažoval ale nepřipadá mi to jako optimání. Konkrétně se jedná o to že mám testovací program. Otázky načítám z txt ale chci aby se vždy popřecházely jinak.
Slušněji udělané testy mají několik okruhů otázek a do výsledného testu se vždy vyberou náhodně otázky z těch okruhů. Takže žádný test pak není stejný a přitom obsahují otázky ze všech okruhů.
Co tem můj první návrh? To bude dostatečně rychlé
Jedná se o poměrně jednoduchý program, až na toto. To mě zastavilo. A ten tvůj první návrh mi dodal inspiraci tak to tak udělám. Díky
Kolik a z kolika se ty hodnoty budou generovat? Pokud se generuje malá množina z množiny mnohem větší, tak je tenhle algoritmus slušně efektivní. V jiných případech je zase vhodnější jiný. Ale tyhle údaje jsi neuvedl.
slusne sa to da robit tak ze na zaciatku mas X cisel takze generujes nahodne cislo od 1 po X. to vyberes a odstranis z pola (posunies zbytok pola). Teraz uz mas len X-1 cisel takze generujes nahodne cislo od 1 po X-1, vyberes z pola, odstranis, a tak dookola v cykle az kym nebude pocet cisel 0.
optimalizovat sa to potom este da tak ze neposuvas pole ale urobis si len masku ze ktore uz boli vybrate a pri vyberani dalsieho cisla prehladavs masku a ratas pocet nevybratych cisel od zaciatku.
P.S. myslim ze tento postup by nemal modifikovat rozdelenie pravdepodobnosti takze rozdelenie by malo ostat take jake mas u generatora nahodnych cisel, ale nechce sa mi to ratat ani matematicky dokazovat :)