Quero colocar meus itens e inimigos aleatoriamente (ou o mais aleatoriamente possível). No momento, uso a Random
classe do XNA para gerar um número entre 800 para X e 600 para Y. Parece que os inimigos aparecem mais no topo do mapa do que no meio ou no fundo. Eu não semeio o gerador, talvez isso seja algo a considerar.
Existem outras técnicas descritas que podem melhorar a colocação aleatória de inimigos em uma grade 2D?
Respostas:
O posicionamento aleatório não parece aleatório o suficiente para os olhos. Você provavelmente vai querer que os inimigos sejam espaçados um pouco mais uniformemente. Dê uma olhada neste artigo sobre amostragem de disco Poisson ou leia sobre ruído azul.
fonte
Shawn Hargreaves para o resgate!
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
Quando você pensa em distribuição aleatória, você realmente quer dizer distribuição uniforme. O Random da .Net está pensando aleatoriamente. Você precisa de outra coisa para equilibrar. O método de amostragem de disco de Poisson amitp vinculado parece perfeito para suas necessidades.
fonte
O código C # a seguir irá gerar um conjunto de pontos uniformes para você:
Observe que quando você usa o construtor Random () sem parâmetros, o objeto Random que você cria é propagado com base no tempo, portanto será essencialmente aleatório, a menos que você o faça repetidamente com muito pouco tempo entre as chamadas.
fonte