답변
예 당신이, 당신이 당신의 자신의 LCG 번호 생성기를 구현할 수 있습니다 (즉함으로써 내가. Math.random
를 사용하지 않고 의미)하지만 Sarnold 언급대로 호출 사이에 상태를 유지해야합니다.
'Math.random'은 어떤 방식 으로든 상태를 유지합니까? – Randomblue
@Randomblue Math.random이하는 일은 확실하지 않지만 LCG 알고리즘은 이전 값을 사용하여 다음 값을 생성합니다. –
상태 (또는 다시 말하면 재귀)를 유지하지 않으면 임의성을 생성 할 수 없습니다. 모든 난수 생성기는 사실 매우 혼란스럽고 결정적인 프로세스입니다. –
임의의 임의성이 필요하지만 문법을 찾기 위해 게으른 경우 일반적으로 수행하는 작업은 logistic map (개별 혼란 시스템)을 구현하는 것입니다. 의사 코드에서이 같이 있습니다 :
var x = 0.234; // or some other number between 0 and 1 (but not 0.5)
for (var n=1; n<=100;n++){
x = 4 * x * (1-x); // this is the iteration
console.log(x);
}
이 정말 무작위로하지만 충분한 임의 많은 경우 100 개 어떻게 든 임의의 숫자를 인쇄한다. 자바 스크립트 답변을 제공하지 않아 죄송합니다. 10 년 동안 사용하지 않았습니다.
@ OscarGomez의 답변에 대한 답변은 linear congruential generator이고, 여기에 일반 JavaScript 기능으로 난수 생성기가 들어 있습니다. 물론, "임의성"(현재는 짧은 사이클로 인해 매우 좋지 않음)의 품질은 둘러싸인 객체 "o"의 상수 값을 선택하는 데 따라 달라집니다.
var random = (function() {
var o = {mod: 13, mul: 11, inc: 7, x: 0};
return function() {
return o.x = (o.mul * o.x + o.inc) % o.mod
}
})();
random(); // => 7
random(); // => 6
random(); // => 8
random(); // => 4
여기 개별 인스턴스 생성과 씨앗을 가질 수보다 휴대용 버전이다 :
function Random(s) {
this.seed = s || 0;
this.mod = 13;
this.mul = 11;
this.inc = 7;
this.x = this.seed;
}
Random.prototype.next = function() {
return (this.x = (this.mul * this.x + this.inc) % this.mod);
};
var r = new Random(1);
r.next(); // => 5
r.next(); // => 10
r.next(); // => 7
seed seed = new Date(). getTime();'에 대해 항상 밀리 초 시간을 사용하는 것이 안전하거나 임의성에 영향을 미칩니 까? –
- 1. 같은 이름 함수 호출
- 2. 같은 클래스에서 함수 사용하기
- 3. 같은 클래스의 함수 호출하기
- 4. Excel의 수식과 같은 함수 사용
- 5. wordpress와 같은 PHP 함수 the_content()
- 6. C++ - 같은 이름을 가진 함수
- 7. 다른 클래스에서 같은 함수 호출
- 8. 함수 변수와 함수 변수에 같은 이름이 있습니다. 액세스하는 방법?
- 9. 같은 클래스의 다른 멤버 함수 내에서 클래스 멤버 함수 호출
- 10. 같은 프로젝트의 두 C++ 파일에서 같은 헤더 파일의 함수 호출하기
- 11. 같은 파일을 두 번 같은 함수 이름으로 두 번 포함합니다.
- 12. C++ - 클래스와 같은 이름의 클래스에서 함수 호출하기
- 13. 'echo'와 같은 PHP에서 괄호없이 함수 만들기
- 14. 같은 역할을 내가 함수 바닥을 만들고 싶습니다
- 15. 콜백 함수 내가 모델에 다음과 같은 한
- 16. 파이썬에서 같은 함수 이름, 오류가 없습니까?
- 17. 다른 파일에서 같은 이름의 Cal 함수
- 18. 쌍과 같은 함수 인수를 취하는 방법
- 19. 루비 나는이 같은 일부 HAML 코드가 함수
- 20. 함수와 같은 MS Excel eval() 함수
- 21. 하스켈에서 OOP 메소드와 같은 함수 사용하기
- 22. C : printf와 같은 함수 작성 방법
- 23. 자바 스크립트에서 같은 이름을 가진 함수
- 24. CPP이 같은 템플릿 멤버 함수 전문
- 25. C++ 순수 가상 함수 상속 (같은 서명)
- 26. 배치 파일에서 함수/메소드와 같은 것이 있습니까?
- 27. php와 같은 언어를 사용하여 퍼지 함수 만들기
- 28. PHP에서 substr()과 같은 기능을하는 C++ 함수
- 29. 은 좋은 연습이 같은 함수에서 함수
- 30. 함수 내에서 배열 []과 같은 벡터에 액세스합니다.
모든 적당한 [의사 난수 생성기 (http://en.wikipedia.org/wiki/Pseudorandom_number_generator)는 객체 또는 전역 변수를 통해 호출간에 _state_를 유지해야합니다. 클라이언트가 재사용하거나 글로벌 변수에 액세스하여 호출간에 지속되는 객체를 갖게됩니까? – sarnold
아니요. 'Math.random'이 (가) 상태를 유지합니까? – Randomblue
난수 생성에 대한 깊은 이해를 얻기 전까지 ... 특히 암호를하려는 경우. – Incognito