ran*_*elp 6 javascript random bitwise-operators
我已经被赋予了将Java移植Java.util.Random()
到JavaScript 的任务,并且我在Javascript中使用按位运算符在足够大的数字上遇到了巨大的性能损失/不准确性.一些粗略的研究表明"JavaScript中的按位运算符本质上很慢",因为在内部看来,JavaScript会将其所有双值转换为带符号的32位整数来执行按位运算(有关详细信息,请参阅此处).这个,我不能做Java随机数生成器的直接端口,我需要得到相同的数值结果Java.util.Random()
.写点像
this.next = function(bits) {
if (!bits) {
bits = 48;
}
this.seed = (this.seed * 25214903917 + 11) & ((1 << 48) - 1);
return this.seed >>> (48 - bits);
};
Run Code Online (Sandbox Code Playgroud)
(这是一个几乎直接的端口Java.util.Random()
)代码将无法正常工作,因为Javascript无法对大小的整数执行按位操作.)
我已经发现我可以使用Lehmer算法在32位空间中创建一个可播种的随机数生成器,但诀窍是我需要获得与我相同的值Java.util.Random()
.我该怎么做才能建立一个更快速,更实用的端口?
归档时间: |
|
查看次数: |
793 次 |
最近记录: |