haskell에서 주어진 시드로 난수 품질

카이만

저는 작은 ASCII 게임에서 절차 적 생성을 사용하고 있는데 haskell에서 난수로이 문제가 발생했습니다. 기본 아이디어는 게임 세계 일부의 (x, y)로 시드 된 임의의 숫자를 제공하여 예를 들어 나무가 있는지 여부를 결정하는 것입니다 ( 이 사람은 잘 설명합니다 ).

이것은 세대마다 다른 씨앗을 시도 할 때 얻는 것입니다.

randomFromSeed :: Int -> Int -> Int
randomFromSeed max seed = fst (randomR (0, max - 1) (mkStdGen seed))

Prelude> map (randomFromSeed 10) [1..20]
[5,9,3,7,1,5,9,3,7,1,5,9,3,7,1,5,9,3,7,1]

확실히 기간은 5이지만 mkStdGen 문서 에서는 다음과 같이 말합니다.

mkStdGen 함수는 Int를 생성기에 매핑하여 초기 생성기를 생성하는 대체 방법을 제공합니다. 다시 말하지만, 별개의 인수는 별개의 생성자를 생성 할 가능성이 있어야합니다.

그렇다면 어떻게 5 개의 고유 한 발전기 만 오는 것 같습니까?

다른 시드가 주어 졌을 때 그것들이 정말로 무작위가되도록 어떻게 할 수 있습니까?

편집 더 큰 숫자를 사용하는 이상한 이유 때문에 더 좋습니다.

Prelude> let mult = 1000000 in map (randomFromSeed 10) [0,mult .. 20*mult]
[3,7,0,6,9,2,8,1,4,0,3,9,2,5,1,4,7,3,6,9,5]
데이브 콤튼

당신은 당신이 사용하여 볼 수있는 예기치 않은 동작 피할 수 PCG-임의 대신 무작위를 :

import System.Random.PCG 
import Control.Monad.ST

randomFromSeed :: Int -> Int -> Int
randomFromSeed max seed = runST $ do
  g <- initialize (fromIntegral seed) 0
  uniformR (0, max - 1) g

main :: IO ()
main = print $ map (randomFromSeed 10) [1..20]

pcg-random에는 다른 좋은 속성도 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Matlab : 주어진 확률로 정규 분포에서 난수 생성

분류에서Dev

주어진 표준 편차 (시그마)로 PHP에서 정규 분포 된 난수를 만드는 방법은 무엇입니까?

분류에서Dev

파이썬에서의 기대 값과 함께 주어진 분포 난수를 플로팅

분류에서Dev

구조 C에서 주어진 숫자의 난수

분류에서Dev

좋은 품질의 LXD 문서는 어디에서 찾을 수 있습니까?

분류에서Dev

Pyspark의 주어진 시간 창에서 마지막 행 수

분류에서Dev

C에서 주어진 함수의 시간 복잡도 계산

분류에서Dev

주어진 수준의 MultiIndex 시리즈에서 선택

분류에서Dev

Mongodb에서 주어진 수의 레코드 제거

분류에서Dev

주어진 간격에서 레코드 수 찾기

분류에서Dev

주어진 간격에서 숫자 분포를 사용하여 난수 생성

분류에서Dev

부울 유형 시그니처가 주어진 haskell 함수

분류에서Dev

주어진 시간이 안드로이드에서 주어진 시간 간격에 속합니까?

분류에서Dev

인수로 주어진 클래스에서 상속

분류에서Dev

주어진 포트에서 수신하는 프로세스

분류에서Dev

주어진 숫자 세트에서 공백 대신 쉼표를 어떻게 가질 수 있습니까?

분류에서Dev

주어진 노드에서 사용 가능한 코어 수 찾기

분류에서Dev

gridview에서 이미지보기 드로어 블을 설정할 때 낮은 품질의 이미지

분류에서Dev

그래픽 카드의 품질을 어떻게 평가할 수 있습니까?

분류에서Dev

주어진 텍스트에서 단어를 검색하고 변수로 분할

분류에서Dev

어떻게 안드로이드에서 무작위로 질문을 표시 할 수 있습니다

분류에서Dev

품질 손실없이 jpeg의 레이어에서 투명도를 자동으로 제거 할 수 있습니까?

분류에서Dev

JWPlayer HD 품질 토글 링 소스 코드를 어디에 넣습니까?

분류에서Dev

주어진 시간에 ValueAnimator의 값을 수동으로 계산하는 방법

분류에서Dev

Swift Combine-주어진 순서대로 작업 수행

분류에서Dev

Java varargs는 주어진 순서대로 수신됩니까?

분류에서Dev

주어진 시간에 비디오의 오디오 주파수 스펙트럼

분류에서Dev

주어진 날 1,2,3, ... n에 MySql에서 동일한 상품을 구매 한 사용자의 수

분류에서Dev

Prestashop에서 주어진 속성으로 제품에서 특정 조합을 가져옵니다.

Related 관련 기사

  1. 1

    Matlab : 주어진 확률로 정규 분포에서 난수 생성

  2. 2

    주어진 표준 편차 (시그마)로 PHP에서 정규 분포 된 난수를 만드는 방법은 무엇입니까?

  3. 3

    파이썬에서의 기대 값과 함께 주어진 분포 난수를 플로팅

  4. 4

    구조 C에서 주어진 숫자의 난수

  5. 5

    좋은 품질의 LXD 문서는 어디에서 찾을 수 있습니까?

  6. 6

    Pyspark의 주어진 시간 창에서 마지막 행 수

  7. 7

    C에서 주어진 함수의 시간 복잡도 계산

  8. 8

    주어진 수준의 MultiIndex 시리즈에서 선택

  9. 9

    Mongodb에서 주어진 수의 레코드 제거

  10. 10

    주어진 간격에서 레코드 수 찾기

  11. 11

    주어진 간격에서 숫자 분포를 사용하여 난수 생성

  12. 12

    부울 유형 시그니처가 주어진 haskell 함수

  13. 13

    주어진 시간이 안드로이드에서 주어진 시간 간격에 속합니까?

  14. 14

    인수로 주어진 클래스에서 상속

  15. 15

    주어진 포트에서 수신하는 프로세스

  16. 16

    주어진 숫자 세트에서 공백 대신 쉼표를 어떻게 가질 수 있습니까?

  17. 17

    주어진 노드에서 사용 가능한 코어 수 찾기

  18. 18

    gridview에서 이미지보기 드로어 블을 설정할 때 낮은 품질의 이미지

  19. 19

    그래픽 카드의 품질을 어떻게 평가할 수 있습니까?

  20. 20

    주어진 텍스트에서 단어를 검색하고 변수로 분할

  21. 21

    어떻게 안드로이드에서 무작위로 질문을 표시 할 수 있습니다

  22. 22

    품질 손실없이 jpeg의 레이어에서 투명도를 자동으로 제거 할 수 있습니까?

  23. 23

    JWPlayer HD 품질 토글 링 소스 코드를 어디에 넣습니까?

  24. 24

    주어진 시간에 ValueAnimator의 값을 수동으로 계산하는 방법

  25. 25

    Swift Combine-주어진 순서대로 작업 수행

  26. 26

    Java varargs는 주어진 순서대로 수신됩니까?

  27. 27

    주어진 시간에 비디오의 오디오 주파수 스펙트럼

  28. 28

    주어진 날 1,2,3, ... n에 MySql에서 동일한 상품을 구매 한 사용자의 수

  29. 29

    Prestashop에서 주어진 속성으로 제품에서 특정 조합을 가져옵니다.

뜨겁다태그

보관