Geek tričko zdarma Geek tričko zdarma
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde

Diskuze: Jak udělat deterministický generátor světa?

Aktivity (4)
Avatar
Matěj Strnad:20. dubna 12:01

Dělám hru kde potřebuji deterministický genérátor světa, takže náhodně vygeneruju nějaké číslo, které když bude stejné tak i svět bude stejný. Svět je rozdělen na bloky, každý blok má svoji četnost která se mění podle hloubky, změnou hloubky se i odebírají a přidávají ze seznamu dostupné bloky.

Nedeterministický generátor dokážu. Ten fungoval na principu že se sčtítaly četnosti a vygenerovalo se náhodné číslo v romezí 1-vysledek všech četností. Poté se zjistilo kterému bloku odpovídá dané číslo. Uvedu na příkladu:

Blok 1 má četnost 10
Blok 2 má četnost 5
Když sečtu četnosti vyjde 15, 1-10 patří bloku 1, 11-15 bloku 2. Náhodné číslo je např. 8 takže se použije blok 1.

Je možné udělat něco takového aby to bylo deterministické? Sířka a hloubka budou pořád stejné.
Děkuji za odpoveď :)

Zkusil jsem: Nedeterministického generátoru světa

Chci docílit: Deterministického generátoru světa

 
Odpovědět 20. dubna 12:01
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Odpovídá na Matěj Strnad
Luboš Běhounek Satik:20. dubna 12:12

Ano, pokud používáš nějaký běžný deterministický generátor náhodných čísel, tak mu stačí vždycky nastavit stejný seed - to je to číslo, co když bude stejné, tak budou vypadávat stejná náhodná čísla, takže budeš mít stejný svět.

V C# při vytváření instance třídy Random jen stačí zadat seed parametr, když ho nezadáš, tak se použije tuším aktuální čas.

class World
{
  Random rnd = new Random(42);
...
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +2 20. dubna 12:12
https://www.facebook.com/peasantsandcastles/
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.