获得随机范围选择的最大值

时间:2015-04-12 13:29:17

标签: javascript arrays random

这是我的数组

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

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

[ 0.12, 0.25, 0.55, 1.05, 1.8 ]

我在数组的最小值和最大值之间生成rand值:

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

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

我需要得到兰特数落入的累积数组的间隔。 例如,兰特数可以是1.5948337644897403,然后数字介于1.05和1.8之间,然后我会选择1.05

问题是数组的最后一个元素永远不会被挑选出来。如何获取数组的最后一个元素?

1 个答案:

答案 0 :(得分:2)

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

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

var randNumber = Math.random() * max;

然后,您应该获得一个值高于随机数的项目:

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

以下测试显示权重正确:http://jsfiddle.net/Guffa/kgbL4rsc/