Javascript Math.random产生了多少熵?

Javascript Math.random产生了多少熵?,javascript,random,precision,Javascript,Random,Precision,我想生成一个非常大的随机数。我不需要这个号码是加密安全的。因此,我没有使用。目前,我生成的随机数如下: const random=length=> Math.floor(长度*Math.random()); 常量填充=(长度、字符、字符串)=> (新数组(长度+1).join(字符)+string.slice(字符串.length); 常量随机位=位=> 填充(位,'0',随机(数学功率(2,位)).toString(2)); 常量getRandom=位=> 比特确定性算法(包括伪随机数发生器

我想生成一个非常大的随机数。我不需要这个号码是加密安全的。因此,我没有使用。目前,我生成的随机数如下:

const random=length=>
Math.floor(长度*Math.random());
常量填充=(长度、字符、字符串)=>
(新数组(长度+1).join(字符)+string.slice(字符串.length);
常量随机位=位=>
填充(位,'0',随机(数学功率(2,位)).toString(2));
常量getRandom=位=>
比特确定性算法(包括伪随机数发生器)本身不能产生熵;它必须来自外部,例如算法接收的种子


但是,请注意,允许实现使用任何“依赖于实现的算法或策略”,而不一定是确定性算法,只要该数字在区间[0,1]上“随机或伪随机选择,分布近似均匀”。因此,无论
Math.random()
实际使用熵同样取决于实现-也没有强制要求使用收集熵来为PRNG(如果实现使用)播种的特定策略。

看起来像是Firefox、Chrome和Safari使用[xorshift128+][vigna.di.unimi.it/ftp/papers/xorshiftplus.pdf]的复制品用于生成伪随机数。Math.random()返回一个介于0和1之间的数字。因此,我猜这是一个具有适当指数的随机尾数。如果只乘以2的幂,尾数应该保持不变。当前输出是一个由“0”和“1”字符组成的字符串。如果这是您想要的,那么浮点的字节大小为什么重要?如果它比y重要,为什么你生成字符串吗?@trincot这只是为了表明我生成了一个非常大的数字。在实际代码中,我会生成一个字符串。