gpt4 book ai didi

javascript - 乐透生成器 JavaScript

转载 作者:行者123 更新时间:2023-11-28 15:16:56 24 4
gpt4 key购买 nike

你好,通过乐透生成器代码,我在一个“生成”周期中得到了一些数字双倍的结果。这是代码:

function lottery() {
for (var i=0; i<=7; i++) {
var lottery = Math.floor(Math.random() * 49);
document.getElementById ("lotto" + i).innerHTML = lottery;
}
}

谁知道问题出在哪里?谢谢!

最佳答案

只是为了好玩:O(N) 解决方案(其他发布的是 O(N^2))

它使用Fisher-Yates shuffle algorithm然后在前 7 元素被打乱后,它会按原样获取它们。

因此,无需检查是否已抽出任何号码:

const arr = Array(50).fill(0).map((_, i) => i);
const DRAW = 7;

const rand = (from, to) => Math.floor(Math.random() * (to - from + 1)) + from;

for (let i = 0; i < DRAW; ++i) {
const r = rand(i, arr.length - 1);
[arr[r], arr[i]] = [arr[i], arr[r]];
}

const selected = arr.slice(0, DRAW);

引用文献:

关于javascript - 乐透生成器 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33468028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com