시드 (의사) 난수 생성기를 생성하는 예를 검색하면 다음과 같은 결과가 발생합니다 (구체적인 예 : http://indiegamr.com/generate-repeatable-random-numbers-in-js/ ).
// the initial seed
Math.seed = 6;
// in order to work 'Math.seed' must NOT be undefined,
// so in any case, you HAVE to provide a Math.seed
Math.seededRandom = function(max, min) {
max = max || 1;
min = min || 0;
Math.seed = (Math.seed * 9301 + 49297) % 233280;
var rnd = Math.seed / 233280;
return min + rnd * (max - min);
}
이러한 특정 숫자 (9301, 49297, 233280)와 알고리즘은 계속해서 사용되지만 아무도 이에 대한 명확한 참조가없는 것 같습니다. 누가이 알고리즘을 발명하고 배포를 테스트 했습니까? 인용 할 종이나 무언가가 있습니까?
5
그것은 선형 합동 발생기 이지만 상당히 작은 기간을 가지고 있습니다 (32 비트 정수는 40 억의 기간을 허용합니다
—
래칫 괴물
사람들은 종종 책에서 직접 코드를 복사하므로 아마도 오래된 책에서 나온 것일 수 있으며 여러 번 복사되었습니다. 또한 제한적인 경우 인 것 같습니다. 아마도 도움이 될 것입니다 : heydari.persiangig.com/Ebooks/Applied_Crypto-Ch11-ch20.pdf/… ict.griffith.edu.au/anthony/info/C/RandomNumbers
—
barrycarter
@ jlarson의 의견은 거의 길지 않지만 두 가지 문제가 있습니다. 먼저, 래칫 괴물이 암시하는 것처럼 모듈로는 최대 기간, 즉 발전기 자체가 반복되기 전의 고유 숫자의 수입니다. 실제 기간은 더 작을 수 있습니다. 둘째, 다른 두 숫자 (주로 배수)는 모듈로 숫자 보다 상대적으로 소수 여야 더 긴 기간을 보장 할 수 있습니다. 이상적으로 모듈로 수는 데이터 유형에 맞는 최대 양의 정수보다 작은 최대 소수이고 다른 두 숫자도 큰 소수입니다.