请不要仅仅因为它只讨论随机函数就关闭这个问题。
嗨,
我有一个关于 d3.randomInt() 的虚拟问题;
d3.randomInt() 的输出是一个函数而不是一个值。 因此,要获得 0,10 之间的随机数字, 我需要做的是(我猜)
var x = d3.randomInt(0,10)();
但它说 d3.randomInt 不是一个函数。 所以我尝试了
var x = d3.randomInt(0,10)
以防万一,它们都不起作用。 我没有看到 d3 的发行说明说 randomint 不再可用。 所以我确信有一种方法可以获取这些值。
提前谢谢您。
最佳答案
d3.randomInt
是 d3-random 模块版本 2 的一部分。由于主 D3 bundle 版本 5 仍然使用该模块的版本 1,因此在加载 bundle 时该方法尚不可用。引入该方法是为了解决问题 randomInt([min = 0, ]max) #26并将成为即将推出的 version 6 的一部分主包的。
在撰写本文时,尚未公开发布主捆绑版本 6 的预发布版本。尽管如此,为了让它正常工作,有几种选择:
- 创建您自己的 custom bundle包含 d3-random 模块 v2。
- 加载单独的模块而不是整个包,包括 d3-random v2。
- 最简单且干扰最小的方法可能是通过添加 few lines 来扩展 D3 v5将缺少的方法
d3.randomInt()
添加到d3
对象。查看以下代码片段(加载 D3 v5.7.0)以获取工作演示。
d3.randomInt = d3.randomInt || (function sourceRandomInt(source) {
function randomInt(min, max) {
if (arguments.length < 2) max = min, min = 0;
min = Math.floor(min);
max = Math.floor(max) - min;
return function() {
return Math.floor(source() * max + min);
};
}
randomInt.source = sourceRandomInt;
return randomInt;
})(Math.random);
const random = d3.randomInt(5, 10);
console.log(random());
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
关于javascript - d3.randomInt 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61017839/