2013-02-15 5 views
3

"미로"의 타일을 선택하는 데 사용할 난수 시퀀스를 생성하고 싶습니다. 각각의 미로는 id를 가지며이 id를 pseudo random 함수의 시드로 사용하려고합니다. 그 방법으로 동일한 미로를 반복 생성 할 수 있습니다. 미로 이드입니다. 가급적 나는 알고리즘을 제어 할 수없고 플랫폼에서 플랫폼으로 바뀔 수 있기 때문에 언어에서 의사 랜덤 함수를 사용하고 싶지는 않습니다. 따라서, 알고 싶습니다 :의사 랜덤 함수를 구현하는 방법

  • 의사 고유의 의사 랜덤 기능을 구현하려면 어떻게해야합니까?
  • 플랫폼 독립적 인 의사 난수를 생성하는 것이 가능합니까?
+2

웹 검색! [위키 백과 : 선형 합동 생성기] (http://en.wikipedia.org/wiki/Linear_congruential_generator). –

+2

또는 링크 및 참조가 포함 된 [Wikipedia articles] (http://en.wikipedia.org/wiki/Pseudo-random_number_generator) ... 그래서 Google이 아닙니다. – vanza

+1

개념적으로는 자신의 의사 난수 생성기를 구현하는 것이 가장 좋지만 실제로는 다른 사람의 의사 생성기 코드를 오픈 소스로 가져 와서 응용 프로그램에 대한 복사본을 만드는 것이 가장 좋습니다. 그렇게하면 올바르게 구현되었으며 기본 라이브러리가 변경 되었기 때문에 변경되지 않습니다. –

답변

7

예, 가능합니다. 여기

노이즈 생성을위한 이러한 알고리즘 (및 이용)의 일례이다 http://freespace.virgin.net/hugo.elias/models/m_perlin.htm

그 특정한 랜덤 함수 (NOISE1, Noise2, Noise3, ...)의 입력 파라미터를 사용로부터 의사 임의 값을 계산 그곳에. 출력 범위는 0.0 ~ 1.0입니다.

그리고 더 많은 것이 있습니다 (의견에 언급 된 것처럼).

+0

링크가 멋졌습니다! 펄린 노이즈 기능입니다! –

0

파이썬을 사용하는 경우 처음에 import random을 입력하여 임의 모듈을 사용할 수 있습니다. 그런 다음, 그것을 사용하려면, VAR = random.randint (1000, 9999)

이 var에 당신이 다른 언어를 사용하는 경우에는 해당 ID

에 사용할 수있는 4 자리 숫자를 제공을 붙이 유사한 모듈이있을 가능성이 높습니다.

+1

그러나 그것은 그의 문제를 해결하지 못합니다. 파이썬의 다음 릴리스에서는 다른 난수 알고리즘을 사용할 수 있습니다. 즉, 동일한 시드에 대해 다른 일련의 숫자를 얻을 수 있습니다. –

+0

그가 할 수있는 일은 사전을 텍스트 파일에 저장하는 것입니다. 텍스트 파일은 새로운 ID가 만들어 질 때마다 추가됩니다. 이렇게하면 파이썬이 업데이트 될 때 새로운 숫자 생성기가 숫자를 선택하여 사전에 있는지 확인합니다. 그렇지 않은 경우, 새로운 미로를 만들고 필요한 모든 정보를 텍스트 파일에 추가하십시오. 번호가 이미 사용 된 경우 새 번호를 선택하고 번호가 발견 될 때까지 계속 확인하십시오. – erdekhayser

+0

난수 생성기를 random.seed (maze_id)로 시드하는 것이 더 쉬울 수도 있지만 플랫폼 별 솔루션입니다. – argentage

2

Mersenne Twister이 이에 적합 할 수 있습니다. Wikipedia의 의사 코드에서 볼 수 있듯이, 해당 시드가있는 모든 인스턴스에 대해 동일한 값을 생성하려는 경우 RNG를 시드 할 수 있습니다. 귀하의 경우, 미로 ID 또는 미로 ID의 해시.

관련 문제