javascript - 获取随机范围选择的最大值

标签 javascript arrays random

这是我的数组

[0.12, 0.13, 0.3, 0.5, 0.75];

我从这个数组计算总和累积数组:

[ 0.12, 0.25, 0.55, 1.05, 1.8 ]

我从数组中生成介于最小值和最大值之间的随机值:

var randNumber = (Math.random() * (max - min)) + min;

在以下情况下,min=0.12max=1.18

我需要获取随机数所在的累积数组的区间。 例如,随机数可以是 1.5948337644897403 然后数字介于 1.05 和 1.8 之间然后我会选择 1.05

问题是数组的最后一个元素从未被挑选出来。如何获取数组的最后一个元素?

最佳答案

问题是您得到的是 minmax 之间的随机值,而且您得到的值低于随机值。被排除的项目实际上是第一个项目,但是因为你得到了错误的项目,所以所有的权重都是错误的,你永远不会得到最后一个项目。

你应该得到一个介于 0 和 max 之间的随机值,否则你将排除数组中的第一项:

var randNumber = Math.random() * max;

然后您应该得到值高于随机数的项目:

var index = arr.length - 1;
while (index > 0 && arr[index - 1] >= randNumber) index--;

这是一个显示权重正确的测试:http://jsfiddle.net/Guffa/kgbL4rsc/

关于javascript - 获取随机范围选择的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29590001/

相关文章:

java - JAVA中将列表放入数组

c# - 随机数概率

php - 伪随机 URL 生成

javascript - 如何在浏览器调整大小时启用滚动

javascript - 如何在 Javascript 中动态获取 JSON 数组名称

javascript - 在 Javascript 中获取第一个数字出现后的子字符串

javascript - 链接到 native Javascript 函数

java - 生成 1 到 100 之间的 1 到 300 个数字并将每个数字放入字符串中时遇到问题

javascript - 如何检索 Facebook 帖子详细信息?

javascript - 需要根据jquery中给定的数值分割字符串