어떤 컴퓨터의 임의 번호가 실제로 무작위가 아니라는 것을 알고 있습니다. 그러나 현재 얻고있는 것보다 조금 더 변형 될 것으로 예상됩니다. 나는 주사위 굴림을 시뮬레이트하려고합니다. 예를 들어 4d6은 6 면체 주사위 4 개가 될 것입니다. 이것은 단순히 4에서 24 사이의 임의의 숫자를 생성하는 것보다 훨씬 정확합니다. 여기서는 확률 곡선에 들어 가지 않습니다.파이썬 : 무작위 시드 문제
내가 찾는 것은 현재 시스템 시간을 사용하지 않는 것입니다. 느낄 수있는 모든 씨앗만큼 좋은, 잘못 될 수) 번호가 일관되게 낮은되었습니다. 나는 3d6의 약 50 롤 이후에 한 번도 12를 초과하는 금액을 얻은 적이 없다는 것을 의미합니다. 범위의 1/3의 0 히트 비율입니다. 특히 이상하다고 생각합니다. 여기
희망 누군가가 아마도 시스템 시간에서 파종이 할 수있는 더 좋은 방법을 알고, 본질적으로 나쁜 몇 가지 코드입니다 그리고 난 그냥 아무 생각이 없다 : (나는 생략 비 관련 클래스 정의)from random import randrange, seed
def dieroll(self,numrolls,dierange):
""" This method will return 'num' rolls of a d'range' die.
For example, 4d6 will simulate four rolls of a 6-sided die. """
seed()
sum = 0
for roll in range(0, numrolls):
dieroll = randrange(1,dierange)
sum = sum + dieroll
print("Sum = %d" % sum)
을 여기
내 결과의 작은 샘플입니다 : 내가 값의 종형 곡선을 기대하고,이 작은 샘플 세트하지만 내 전반적인 결과를 (I 전체 (50 개) 결과를 게시하지 않을했다)
>>> c.dieroll(3,6)
Sum = 3
>>> c.dieroll(3,6)
Sum = 11
>>> c.dieroll(3,6)
Sum = 9
>>> c.dieroll(3,6)
Sum = 9
>>> c.dieroll(3,6)
Sum = 10
>>> c.dieroll(3,6)
Sum = 11
>>> c.dieroll(3,6)
Sum = 7
>>> c.dieroll(3,6)
Sum = 7
>>> c.dieroll(3,6)
Sum = 11
>>> c.dieroll(3,6)
Sum = 11
>>> c.dieroll(3,6)
Sum = 4
>>> c.dieroll(3,6)
Sum = 11
>>> c.dieroll(3,6)
Sum = 6
>>> c.dieroll(3,6)
Sum = 12
>>> c.dieroll(3,6)
Sum = 6
>>> c.dieroll(3,6)
Sum = 8
>>> c.dieroll(3,6)
Sum = 8
낮은 쪽에서 매우 비뚤어진 다.
이 도움말에 도움을 주셔서 감사합니다. -이 결과가 가능한 한 "실제 주사위"처럼 현실적 이길 바랍니다.
편집 : 약 20 번 더 굴러서 13과 14를 얻을 수 있었기 때문에 가능하다는 것을 알았습니다. 나는 약 10 세 이하였습니다.
두 번째 편집 : dierange가 dierange가되어야 함을 깨달았습니다. 1 - 1d6이 1-5의 결과를 일관되게 반환했습니다 ... 여전히 시드가 정확할 수 있는지 확실하지 않습니다.
왜 파종을하고 있습니까? 결정적 출력을 보장하기 위해 일반적으로 테스트 할 때만 RNG를 시드합니다. 또한, 당신은 어떤 인스턴스 속성도 사용하고 있지 않습니다 - 이것을 @ staticmethod로 만드는 것을 고려하십시오. – jonrsharpe
어쩌면 오래되었지만 난 임의의 숫자를 생성 할 때 항상 시드해야한다고 생각했는데 그렇지 않은가요? 파이썬에서 만든 첫 번째 RNG입니다. –
이것은 매우 이상합니다. 그러나'randrange (1, dierange)'대신'(random.randint (1,50000) % dierange) +1 '을 시도해 볼 수 있습니다. (코드가 좋지만 문제가 있는지 확인하기 만하면됩니다.) – Elisha