我正在为一个小项目编码,但我的随机数组选择器不起作用
var btnarray = [xfn.left, xn.left, xnln.left, xln.left, xnn.left];
(这是数组(
var rand = btnarray[Math.floor(Math.random() * 4)];
(这是随机选择器变量(
好吧,当我开始时,兰特值的结果等于 btnarray[0]
有人可以帮我吗?
哦,我完全知道变量都是不同的。
谢谢
由于数组的长度为 5,因此您需要将随机函数的值乘以该数字。更好的是,使用length
属性。
var rand = btnarray[Math.floor(Math.random() * btnarray.length)];
你不应该使用Math.floor
因为获取btnarray
数组中的最后一个元素会非常困难,你需要准确地获取btnarray.length
的数字才能得到该元素。此外,floor
往往会使概率结果变平,并且看起来您卡在某些值上,因为它的阈值迫使您拥有小于或等于某个数字的最大整数。
您应该改用round
,这将均匀每个数组元素的概率,并为您提供更明显的随机索引。试试这个,它已经用虚拟btnarray
数组变量进行了测试并且工作正常。
var rand = btnarray[Math.round(Math.random() * btnarray.length)];
如果你把它扔在HTML文档的head标签中:
<script src="https://randojs.com/1.0.0.js"></script>
你可以这样做:
var randomValue = rando(btnarray).value
我通常使用 randojs.com 因为它几乎可以处理您需要的任何随机功能,而且它都简短且易于阅读。