javascript - 如何生成一个范围内的随机数但排除一些?

标签 javascript random numbers

基本上我在 0-24 之间选择一个随机数:

Math.floor(Math.random() * myArray.length); // myArray contains 25 items

假设结果是 8。现在我想在相同范围 0-24 中得到另一个数字,但这次,我不想要 8。下一次,我可能会掷出 15。现在我想要再次滚动,但我不想要 8 或 15。我现在处理这个问题的方法是使用 do while 循环,如果数字相同,我就重新滚动。

这是我作业的一小部分,事实上,我已经努力满足所有要求,所以我想你可以说这是为了我个人的利益,所以我可以正确地写这篇文章,而不是最终“每日 wtf”。

最佳答案

设置一个包含所有值的数组(这只是一个有效的选项,如果你只做小数字,比如你的例子中的 25),像这样:

var array = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24];

然后,在 0 和数组长度之间选择一个随机数:

var num = Math.floor(Math.random() * array.length);

从数组中删除该索引号:

var roll = array.splice(num, 1);

Javascript splice()从数组中删除索引项并将项作为数组返回。非常适合您使用。

从 roll 中获取第一个索引,因为无论如何我们只切出 1:

var yourNumber = roll[ 0 ];

继续做你想做多少卷。此外,您可能希望将原始数组存储为一个副本,以便您可以轻松地“重置”数字。

关于javascript - 如何生成一个范围内的随机数但排除一些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5520835/

相关文章:

javascript - 字符串中的数字超过 '1000' 的比较给出奇怪的结果

javascript - 运行CocosStudio生成的场景?

c - 为什么第二个数组写的是愚蠢的数字? - C语言

javascript - 在单独的 JS 文件中包含辅助函数(客户端)

python 3 : How to move an item from list x to list y and remove it from list x?

random - 检测到随机圆

javascript - 如果一千或更多,则将数字格式化为 2.5K,否则为 900

swift - 如何在 Realm 中对 WBS 格式字符串进行排序?

javascript - 如何在windows中获取实时时间

javascript - 通过 jQuery 将事件附加到 Angular 元素