2D 그리드에 임의의 적 배치


11

아이템과 적을 무작위로 (또는 가능한 무작위로) 배치하고 싶습니다. 현재 XNA의 Random클래스를 사용하여 X의 경우 800에서 Y의 경우 600 사이의 숫자를 생성합니다. 적은 중간 또는 아래쪽보다지도 상단을 향해 생성되는 것처럼 느낍니다. 나는 발전기를 시드하지 않을 것입니다. 아마도 고려해야 할 것입니다.

2D 그리드에서 임의의 적 배치를 향상시킬 수있는 다른 기술이 있습니까?


이 질문은 잘못된 것 같습니다. 무작위 데이터 소스를 사용하지 않고 무작위로 물건을 배치하고 싶습니까? 그것은 모순입니다. 실제로 무엇을 달성하려고합니까?
Andrew Russell

XNA의 Random 클래스를 사용하여 최소와 최대 사이의 숫자를 생성하는 것 이외의 기술이 있는지 알고 싶습니다. 더 명확한 질문을하려고 노력하겠습니다
Robb

1
당신이 말하는 랜덤 클래스는 XNA가 아닌 .NET 프레임 워크의 일부입니다. 그냥 피
Michael Coleman

@Omnion-알고 있습니다. 나는 질문을 만들 때 조금 피곤했다;)
Robb

답변:


16

무작위 배치는 눈에 무작위로 보이지 않습니다. 적들이 조금 더 고르게 간격을두기를 원할 것입니다. 에서 봐 이 문서 포아송 디스크 샘플링에 대한, 또는 블루 노이즈에 대해 읽어보십시오.


7

숀 하그리브스가 구조를 시작합니다!

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

무작위 분포를 생각할 때 실제로 분포를 의미합니다. .Net의 랜덤은 무작위로 생각하고 있습니다. 당신은 그것을 밖으로 다른 무언가가 필요합니다. Poisson 디스크 샘플링 방법 amitp는 귀하의 요구에 완벽하게 보입니다.


+1은 입에서 바로 단어를 가져 왔고, 심지어 분포조차도 항상 무작위 분포와 혼합되어있는 것 같습니다 (나 자신도 같은 실수를했습니다)
Spooks

0

다음 C # 코드는 균일 한 점 집합을 생성합니다.

Random rand = new Random(); // creates a new random number generator with a time-based seed
int X, Y;
for(int i = 0; i < numberOfPoints; i++)
{
  X = rand.Next(800); // generates a random int between 0 and 799, inclusive
  Y = rand.Next(600); // generates a random int between 0 and 599, inclusive
  AddPointToSet(X,Y); // write this method however you want
}

매개 변수없이 Random () 생성자를 사용하면 생성 한 Random 객체가 시간을 기준으로 시드되므로 호출 사이에 시간이 거의없이 반복적으로 수행하지 않는 한 본질적으로 무작위가됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.