有没有办法在Javascript中随机选择N个对象中的一个?

时间:2015-05-05 09:20:51

标签: javascript math random

我们正在讨论CSS和Javascript。

我需要10个CSS div ' s(黄色方块,绿色方块和红色方块......)在1-3秒的时间段后随机出现在屏幕上。

问题:

  • 选择10个中的一个(或一般N个)对象随机出现: 我必须建立在 Math.random()方法的基础上,使用如果在0和0之间选择第一个对象,如果在0和0之间选择第二个对象等。 ,或者是否有更具伸缩性的方式?

编辑:似乎我以错误的方式传达了这个问题。我知道Math.random()是一个可扩展的解决方案,但如果超过10(或N)次不是,则编写。那么如何让计算机从10个(或N个)元素中取出一个。我从 dystroy 得到了最好的答案 - 拿一个数组并将其洗牌,然后取出第一个元素。谢谢!

2 个答案:

答案 0 :(得分:3)

Date.now() % 10。将10替换为div的数量。 now函数提供纪元毫秒数。

请注意,此解决方案不会产生真正的随机选择,因为生成的数字序列通过了随机性的统计测试(至少与专用生成器处于同一级别的nit)。但是,出于实际目的,它就足够了(意味着除非你每隔几毫秒调用now和/或将now的调用计时到计时器;我认为两者都不可能以可靠的方式)。

答案 1 :(得分:1)

Math.random完全可扩展。 : - )

var index = Math.floor(Math.random() * 10);

...会为您提供09的索引。 常规公式为:

value = Math.floor(Math.random() * (max - min)) + min;

...要获得min <= value < max范围内的值,但当min0时(就像从典型数组中选择内容时那样),显然我们可以简化一点。