【发布时间】:2014-02-20 09:41:18
【问题描述】:
有没有一种有效的方法可以将整数解包为随机的唯一数字?
我希望 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 也是一个
好的,我已经完成了。
【问题讨论】:
-
@WesleyMurch 它不是第一个的副本。输出不能重复
-
它也不是另一个的重复,看这重复相同的整数:jsfiddle.net/ecLHN
-
@Squirrl,您是否在 jsfiddle 中反复按“运行”?如果是,那么它当然可以重复,但代码没有错:-)
-
@Squirrl 虽然您的解决方案可以从链接的帖子中得出,但我认为您的问题足够独特,可以提供量身定制的答案并已投票重新开放(仅供参考,目前有 2 个重新开放投票)。很抱歉这么快就投票结束了。
-
用于伪随机数组(不是真正随机的):
var pseudoRandomArray = Array.apply(null, { length: 10 }).map(Number.call, Number).sort(function() { return Math.random() > Math.random(); });
标签: javascript jquery