javascript - 如何使这项工作适用于 BINGO 游戏?
问题描述
尝试使用 Javascript 制作宾果游戏。需要从数组中生成随机的、非重复的值(不是整数)并显示生成的数字。每个值只能生成一次,直到游戏重置。
我尝试尝试从值所在的原始 Set() 生成随机元素,但这仍然会导致重复的数字被调用。我目前正在尝试实现 Fisher-Yates/Durstenfeld 洗牌,但这些洗牌不会在我的 HTML 中显示任何结果。
<head>
<title>BINGO</title>
</head>
<body>
<div id="bingo">
<script>
let numbers = new Set()
.add("B1")
.add("B2")
.add("B3")
.add("B4")
.add("B5")
.add("B6")
.add("B7")
.add("B8")
.add("B9")
.add("B10");
let called = Array.from(numbers);
let display = new Array();
function getRandomNum()
{
function rando()
{
for (let i = called.length - 1; i > called.length; i++)
{
const j = Math.floor(Math.random() * called.length);
const number = called[i];
called[i] = called[j];
called[j] = number;
return number;
let show = called[Math.floor(Math.random() * called.length)];
return show;
}
let index = rando();
document.getElementById('bingo').innerHTML = index;
display.push(index);
document.getElementById('bingo').innerHTML = display[0];
}
}
</script>
</div>
<div id="button">
<button onclick="getRandomNum()">Random Number</button>
</div>
</body>
</html>
在这里,我试图打乱原始数组,从该数组中选择一个随机元素进行显示,显示该元素,然后将其添加到另一个数组中,该数组将显示调用的数字
解决方案
呼叫号码后,将其从阵列中删除。这样,当您打乱数组和/或随机化数组索引时,可以保证永远不会重复。
这意味着在每场比赛之前重新创建数组或创建一个新的重复数组。
正如您所见,拥有一个“被调用”数组来跟踪被调用的内容仍然是必要的,但不能保证不会尝试调用重复项。
推荐阅读
- groovy - 从 Jmeter 中的 Post 请求发送参数时发生编码
- python - 如何在python selennium中上传图片,HTML情况复杂
- wordpress - 我需要撤消重定向插件完成的重定向 URL
- java - Spring Boot MongoDB 应用配置
- svelte - 在 Svelte 3 中访问生成的自定义元素
- xaml - 在 Xamarin 表单中预览嵌套 ContentView 的属性
- r - 逐行比较字符串列与其他列
- javascript - 卡住实现棘手的滚动行为
- javascript - 如何使用 momentjs 处理大日期?
- javascript - mp3文件一一播放列表