문제

내가 사용하는 django의 뷰에서 random.random().얼마나 자주 전화해야 하나요? random.seed()?요청마다 한 번씩인가요?시즌마다 한번씩?웹서버가 실행되는 동안 한 번은요?

도움이 되었습니까?

해결책

부르다 random.seed() 거의 없다면.

난수를 생성하려면 시드를 건드리지 않고 난수 생성기가 실행되도록 허용해야 합니다.숫자의 순서는 무작위입니다.시드를 변경하면 새 시퀀스가 ​​시작됩니다.시드 값은 매우 무작위적이지 않아 문제가 발생할 수 있습니다.

필요한 숫자 수에 따라 시드 재설정을 고려할 수 있습니다. /dev/random 주기적으로.

이전 시드를 모두 사용하기 직전에 시드를 재설정해야 합니다.전체 32비트 무작위성을 얻을 수 없으므로 2**28 숫자를 생성한 후 시드를 재설정해야 할 수도 있습니다.

다른 팁

씨앗을 심지 마세요.

시드를 설정하려는 유일한 경우는 동일한 이벤트가 계속 발생하는지 확인하려는 경우입니다.예를 들어 플레이어가 게임에서 부정 행위를 하는 것을 방지하려면 시드를 저장한 다음 게임을 로드할 때 설정할 수 있습니다.그런 다음 저장하고 다시 로드하는 횟수에 관계없이 여전히 동일한 결과를 제공합니다.

실제로 난수가 필요한 대상에 따라 다릅니다.몇 가지 실험을 통해 차이가 있는지 알아보세요.의사 난수에는 실제로 패턴이 있다는 점도 고려해야 합니다.누군가가 다음 난수를 추측할 수 있다면 당신에게 변화가 있을까요?그렇지 않은 경우 세션 시작 시 또는 서버가 처음 시작될 때 한 번 시드하십시오.

세션 시작 시 한 번 시드하는 것이 가장 합리적일 것입니다. IMO입니다.이렇게 하면 사용자는 세션 전반에 걸쳐 의사 난수 세트를 얻게 됩니다.페이지가 제공될 때마다 시드를 적용하면 이를 보장할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top