Javascript中的48位按位运算?

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().我该怎么做才能建立一个更快速,更实用的端口?

Eli*_*rey 0

JavaScript 中无法进行 48 位按位运算。不过,您可以使用两个数字来模拟它。