JavaScript: Math.random() 返回相同的数字。我该如何阻止呢?
JavaScript: Math.random() returning the same numbers. How do I stop this?
我有一个 JavaScript 字符串数组,我想从数组中随机选择一个字符串。但是,当它在 Edge 和 Chrome 中运行时,它不会抛出任何错误,但每次都会从数组中选择相同的字符串。我查看了 Stack Overflow 上的其他答案,但其中 none 似乎有所帮助。这是我的代码:
var arr = ["string1", "string2", "string3", "string4", "string5", "string6", "string7"]; /* 100 quotes in the real array. */
var dis = parseInt(prompt("Enter the number of strings you would like to display."));
if(dis > arr.length) {
alert("You have entered a number that is too great.");
} else {
for(var n = 1; n <= dis; n++) {
document.write(arr[(Math.random() * (arr.length - 1))] + "<br/>");
}
}
有人有任何代码片段可以确保它不会选择相同的字符串吗?
可能是因为您需要将 Math.random 转换为整数。
试试这个。
document.write(arr[parseInt((Math.random()*(arr.length-1)))]+"<br/>");
你可以试试:
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}
//////////////
document.write(arr[getRandomInt(0, arr.length-1)]+"<br/>");
通过 Math.floor()
.
四舍五入使用 int 作为索引
var arr = ["string1", "string2", "string3", "string4", "string5", "string6", "string7"]; /* 100 quotes in the real array. */
var dis = parseInt(prompt("Enter the number of strings you would like to display."));
if(dis > arr.length) {
alert("You have entered a number that is too great.");
}
else {
for(var n = 1; n <= dis; n++) {
document.write(arr[Math.floor(Math.random() * arr.length)] + "<br/>");
}
}
我有一个 JavaScript 字符串数组,我想从数组中随机选择一个字符串。但是,当它在 Edge 和 Chrome 中运行时,它不会抛出任何错误,但每次都会从数组中选择相同的字符串。我查看了 Stack Overflow 上的其他答案,但其中 none 似乎有所帮助。这是我的代码:
var arr = ["string1", "string2", "string3", "string4", "string5", "string6", "string7"]; /* 100 quotes in the real array. */
var dis = parseInt(prompt("Enter the number of strings you would like to display."));
if(dis > arr.length) {
alert("You have entered a number that is too great.");
} else {
for(var n = 1; n <= dis; n++) {
document.write(arr[(Math.random() * (arr.length - 1))] + "<br/>");
}
}
有人有任何代码片段可以确保它不会选择相同的字符串吗?
可能是因为您需要将 Math.random 转换为整数。 试试这个。
document.write(arr[parseInt((Math.random()*(arr.length-1)))]+"<br/>");
你可以试试:
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}
//////////////
document.write(arr[getRandomInt(0, arr.length-1)]+"<br/>");
通过 Math.floor()
.
var arr = ["string1", "string2", "string3", "string4", "string5", "string6", "string7"]; /* 100 quotes in the real array. */
var dis = parseInt(prompt("Enter the number of strings you would like to display."));
if(dis > arr.length) {
alert("You have entered a number that is too great.");
}
else {
for(var n = 1; n <= dis; n++) {
document.write(arr[Math.floor(Math.random() * arr.length)] + "<br/>");
}
}