var luckyNumbers1 = [1, 2, 3, 4, 5, 6, 7];
var luckyNumber1 = luckyNumbers1[Math.floor(Math.random () * 7)];
console.log ("Your winning numbers are " + luckyNumber1 + ", " +
luckyNumber1 + ", " + luckyNumber1 + "!");
为什么我会得到相同的一组数字?我注意到,如果我进行更多的luckyNumbers设置将有所不同。但是,为什么Javascript只使用1种方法来随机化此变量的数量呢? 例如:
" Your winning numbers are 1, 1, 1!"
" Your winning numbers are 5, 5, 5!"
谢谢,祝您编程愉快!
答案 0 :(得分:3)
因为一旦定义了变量luckyNumber1
,它就不会被更改,无论它被引用了多少次,除非它被覆盖(您永远不会在代码中覆盖它)。
答案 1 :(得分:2)
var luckyNumbers1 = [1, 2, 3, 4, 5, 6, 7];
var getLuckyNumber1 = () => luckyNumbers1[Math.floor(Math.random() * 7)];
console.log ("Your winning numbers are " + getLuckyNumber1() + ", " +
getLuckyNumber1() + ", " + getLuckyNumber1() + "!");
因为您使用的是相同的变量,所以您要为luckyNumber1分配一个值,而只是重复使用该值而不会重新生成随机数。使其具有功能就可以了。
答案 2 :(得分:1)
使用功能。
var luckyNumbers1 = [1, 2, 3, 4, 5, 6, 7];
function luckyNumber1() {
return luckyNumbers1[Math.floor(Math.random () * 7)]
}
console.log ("Your winning numbers are " + luckyNumber1() + ", " +
luckyNumber1() + ", " + luckyNumber1() + "!");
答案 3 :(得分:0)
这是代码的预期行为。您必须了解,分配给luckyNumber1
的值仅被评估一次,因此代码的Math.random()
部分仅运行一次。
您应该将代码放入函数中,以使其多次调用。
另外,您应该使用const
和let
而不是var
(请参阅Const in JavaScript: when to use it and is it necessary?)。
正确的代码应如下所示:
const luckyNumbers = [1, 2, 3, 4, 5, 6, 7];
const drawLuckyNumber = () => {
return luckyNumbers[Math.floor(Math.random () * 7)];
}
console.log ("Your winning numbers are " + drawLuckyNumber() + ", " +
drawLuckyNumber() + ", " + drawLuckyNumber() + "!");
答案 4 :(得分:0)
每个人都将相同答案的不同版本扔掉。您需要每次都生成一个新值,而不是一次生成一个值并一遍又一遍地引用它。我会用rando.js来做到这一点,以使随机性更简单并且更具可读性,但这只是一个偏好。这里所有的答案都起作用。
var luckyNumbers1 = [1, 2, 3, 4, 5, 6, 7];
console.log ("Your winning numbers are " + rando(luckyNumbers1).value + ", " + rando(luckyNumbers1).value + ", " + rando(luckyNumbers1).value + "!");
<script src="https://randojs.com/1.0.0.js"></script>
如果要使用此代码,请不要忘记将script
标签粘贴到html文档的头部。