나는 자바에을 포팅해야한다. JavaScript의 비트 연산자를 충분히 큰 숫자로 사용하면 성능이 크게 떨어지고 부정확하다. 일부 대담한 연구에서는 "JavaScript의 비트 연산자는 본질적으로 속도가 느립니다"라고 말합니다. 내부적으로 JavaScript가 비트 값 연산을 수행하기 위해 JavaScript의 두 값을 모두 부호있는 32 비트 정수로 변환하기 때문입니다 (이에 대해서는 see here). , Java 난수 생성기의 직접 포트를 수행 할 수 없으며 Java.util.Random()
과 같은 숫자 결과를 가져와야합니다. 자바 스크립트가 정수에 그 크기를 비트 연산을 할 수 없기 때문에, 제대로 작동하지 않습니다 코드합니다 (Java.util.Random()
의 거의-직접 포트입니다)Javascript에서 48 비트 비트 연산?
this.next = function(bits) {
if (!bits) {
bits = 48;
}
this.seed = (this.seed * 25214903917 + 11) & ((1 << 48) - 1);
return this.seed >>> (48 - bits);
};
같은 것을 쓰기.)
나 ' Lehmer 알고리즘을 사용하여 32 비트 공간에서 시드 가능한 난수 생성기를 만들 수 있다는 것을 알았지 만 트릭은 Java.util.Random()
과 동일한 값을 가져와야한다는 것입니다. 보다 빠르고 기능적인 포트를 만들기 위해 무엇을해야합니까?