我想在点击button时随机选择一个数字,但我不希望相同的数字被随机化,有什么解决方案吗?
$('button').click(function(){
var nomeri = Math.floor(Math.random() * 100);
}<button>დამაკლიკე</button>发布于 2020-04-13 02:42:36
您可以使用一个递归函数生成一个唯一的数字。
我使用一个数组来实现这个函数,这个数组将保存以前使用的数字和Math.random()的值,以生成随机数。
步骤:
步骤1.创建一个function。
步骤2:生成一个随机数
步骤3:检查数组中是否存在
步骤4:如果已经存在,那么再次调用函数,否则我们就有唯一的随机数。
如果函数超过最大随机数,那么它将返回一个负数。你可以根据你的需要来处理这个问题,你可以重置数组或者类似的东西。
尝尝这个。
$('button').click(function(){
var nomeri = genRandomNum();
console.log(nomeri);
});
let random = [];
function genRandomNum() {
let randNum = Math.floor(Math.random() * 100);
if (random.length >= 100) {
return -1;
} else if (random.includes(randNum)) {
return genRandomNum();
} else {
random.push(randNum);
return randNum;
}
}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>Random Number</button>
发布于 2020-04-13 03:19:41
下面是一种更有效的方法。这样做可能会导致许多函数调用,特别是在数组中添加了大量可用的数字之后。每次它找到一个在再次调用函数之前使用过的数字,以搜索一个尚未使用的随机数。找到一个未使用的号码可能需要很长时间。
这样,当您第一次调用该函数时,您将得到一个未使用的数字。
1)将所有可能的答案添加到数组中。2)然后从该数组返回一个随机值。3)然后修改数组以排除已经返回的值。
请参阅:array.splice()
const allPossibleValues = [];
for(let i = 0; i < 100; i++){
allPossibleValues.push(i);
}
$('button').click(function(){
if(allPossibleValues.length){
let nomeri = returnRandomValueFromArray();
console.log(nomeri);
}
else {
console.log("No more values left");
}
});
function returnRandomValueFromArray() {
const randomIndex = Math.floor(Math.random() * allPossibleValues.length);
const randomValue = allPossibleValues[randomIndex];
allPossibleValues.splice(randomIndex, 1);
return randomValue;
}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>დამაკლიკე</button>
https://stackoverflow.com/questions/61180775
复制相似问题