How much entropy does Math.random generate?(Math.RANDOM能产生多少信息量?)
本文介绍了Math.RANDOM能产生多少信息量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想生成一个非常大的随机数。我不需要这个号码是加密安全的。因此,我没有使用crypto.getRandomValues
。目前,我生成的随机数如下:
数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
const random = length =>
Math.floor(length * Math.random());
const padding = (length, character, string) =>
(new Array(length + 1).join(character) + string).slice(string.length);
const randomBits = bits =>
padding(bits, '0', random(Math.pow(2, bits)).toString(2));
const getRandom = bits =>
bits <= 32 ? randomBits(bits) : randomBits(32) + getRandom(bits - 32);
console.log(' 1 2 3 4 5 6');
console.log(getRandom(64));
然而,这似乎有点浪费,因为在JavaScript中的数字是64 bits long:
在我看来,我们至少应该能够恢复尾数的全部52位。我们可以从Math.random
在JavaScript中生成的数字中提取多少比特的熵?如何提取?
推荐答案
确定性算法(包括伪随机数生成器)本身不能生成熵;它必须来自外部,例如算法接收的种子。
但是,请注意,ECMAScript specification forMath.random()
允许实现使用任何"依赖于实现的算法或策略",不一定是确定性算法,只要数字在区间[0,1]上"随机或伪随机地选择并大致均匀分布"即可。因此,Math.random()
是否实际使用熵同样取决于实现&mdash;也没有强制要求收集熵以播种PRNG的特定策略(如果实现使用了一个)。
这篇关于Math.RANDOM能产生多少信息量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Math.RANDOM能产生多少信息量?


猜你喜欢
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- 400或500级别的HTTP响应 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- Fetch API 如何获取响应体? 2022-01-01