gpt4 book ai didi

javascript - 从 1 到 10 中随机挑选数字而不重复一个的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-29 10:15:52 25 4
gpt4 key购买 nike

有没有一种有效的方法可以将整数解包为随机的、唯一的数字?

我希望 10 变成 3 4 6 1 0 2 5 7 8 9

我试过了 THIS ...但在将值插入数组并疯狂循环之前,我想也许有更好的方法。

编辑:

这是我的新 FIDDLE和功能:

function uniqueDigits(x){
y = [];
z = [];
while(x > 0) {
y.push(x);
x--;
}
while(y.length > 0){
var r = Math.floor(Math.random()*y.length);
var u = y[r]
y.splice(r, 1);
z.push(u-1);
}
return z;
}

uniqueDigits(4) //['2', '3', '0', '1']

编辑:

还有一个OPTION :

function uniqueNum(x){
z = y = x;
var r = Math.ceil(Math.random() * x);

while ( x%r%2 == 0 ) {
r = Math.ceil(Math.random() * x);
}

while( x>0 ){
y = y - r
if(y<0){
var n = y;
y = z + n
}
$('p').append(y);
x--
}
} uniqueNum(4);//['2', '3', '0', '1']

THIS还有一个

好的,我完成了。

最佳答案

由于您要查找范围内的所有数字,请尝试

var x = 10,
array = [];
for (var y = 0; y < x; y++) {
array.push(y);
}
while (array.length) {
var random = Math.floor(Math.random() * array.length);
$('p').append(array.splice(random, 1));
}

演示:Fiddle


另一种使用数组的方式是

var x = 10,
array = [];
//used for counting the loop for performance testing - remove it
var counter = 0;
for (var y = 0; y < x;) {
var random = Math.floor(Math.random() * x);
if ($.inArray(random, array) == -1) {
$('p').append(random);
array.push(random);
y++;
}
//for test
counter++;
}
console.log(counter)

演示:Fiddle - 但是循环执行了太多次

关于javascript - 从 1 到 10 中随机挑选数字而不重复一个的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21903821/

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