【发布时间】:2016-04-05 21:01:29
【问题描述】:
好的,所以我在 javascript 中有非常大的数字数组:
[1, 1.01, 1.02, 1.03, ..., 1.99, 2, ..., 9.98, 9.99, ..., 299.99, 300]
而我需要的是使用随机段获得其中之一。所以基本上我需要随机数,但问题是我需要使用彩票风格随机数。因此,获得“1”的机会将是 30 000(非常高),获得 1.01 的机会将是 29 999。但是根据该数组中的所有数字,获得 300 的机会将非常低。
我希望你能理解这个问题并帮助我解决这个问题。正如我之前提到的,这必须 100% 随机制作,我不知道如何制作..
到目前为止我的解决方案:
我试图通过添加多个相同的数字来扩展数组,并通过每一步减少它的计数。所以我添加了30000 单位1 和29999 单位1.01 ...以及299.99 单位和300 单位。但是数组变得非常大,我来这里是为了找到更好的解决方案。
我也发现了这个:https://stackoverflow.com/a/13758064/5786106 这似乎是我的答案,但我不知道如何将它与十进制系统一起使用 (0.01, 0.02, ... 0.99)
var num = Math.pow(Math.floor(Math.random()*10), 2);
【问题讨论】:
-
所以写正确的标题,这就是你现在被否决的一个重要原因
-
我需要一只独角兽,但我不知道如何获得。你试过什么?你调查了什么?向我们展示一些努力,我们不是为您完成项目/硬件的代码编写机器。
-
我什至无法格式化正确的标题,因为我完全不知道我需要什么。是的,我会写我到目前为止所尝试的。
-
@DaumantasKarpavicius 如果你不知道你需要什么,你怎么能指望有人帮助你呢?我认为您需要阅读随机数分布。也许看看其他解决方案,例如github.com/ckknight/random-js 看看。没有 100% 随机的东西,总会有某种程度的偏见。
-
@Eihwaz,不,不一定有偏见:Math.random() 没有偏见,除非你在谈论伪随机性和真正随机性之间的区别,这不是提问者感兴趣的所有内容。
标签: javascript arrays random