Chcę umieścić moje przedmioty i wrogów losowo (lub tak losowo, jak to możliwe). W tej chwili używam Random
klasy XNA do generowania liczby od 800 dla X do 600 dla Y. Wydaje się, że wrogowie odradzają się bardziej na górze mapy niż na środku lub na dole. Nie uruchamiam generatora, może to jest coś do rozważenia.
Czy opisano inne techniki, które mogą poprawić losowe rozmieszczenie wrogów na siatce 2D?
Odpowiedzi:
Losowe rozmieszczenie nie wygląda wystarczająco przypadkowo dla oka. Prawdopodobnie będziesz chciał, aby wrogowie byli rozmieszczeni bardziej równomiernie. Spójrz w tym artykule na temat pobierania próbek dysku Poissona, albo przeczytać o niebieskim hałasu.
źródło
Shawn Hargreaves ratuje!
http://blogs.msdn.com/b/shawnhar/archive/2009/12/17/the-psychology-of-randomness.aspx http://blogs.msdn.com/b/shawnhar/archive/2010/09 /10/links-5-charles-bloom-on-randomness.aspx
Kiedy myślisz o losowej dystrybucji, naprawdę masz na myśli równomierną dystrybucję. Random .Net myśli losowo. Potrzebujesz czegoś innego, aby to wyrównać. Metoda próbkowania dysku Poissona połączona z wygląda idealnie dla twoich potrzeb.
źródło
Poniższy kod C # wygeneruje dla Ciebie zestaw jednolitych punktów:
Zauważ, że kiedy używasz konstruktora Random () bez parametrów, tworzony obiekt Random jest rozstawiany na podstawie czasu, więc będzie zasadniczo losowy, chyba że będziesz robił to wielokrotnie, z bardzo krótkim czasem pomiędzy wywołaniami.
źródło