如何捕获重复的随机数

时间:2013-06-24 03:35:37

标签: actionscript-3

我想在bb1,bb2,bb3,bb4中显示随机数。

alphaset:Array = [1,2,3,4,5,6,7,8,9,10];

bb1 = randomNumber(0, alphaset.length);

bb2 = randomNumber(0, alphaset.length);

bb3 = randomNumber(0, alphaset.length);

bb4 = randomNumber(0, alphaset.length);

在上面,我想删除每个变量的重复条目(即bb1,bb2,bb3,bb4)

最后我想要随机数,而不需要重复输入每个变量

请任何人帮助我实现它。

以上四个var是添加程序的选项。我必须比较上面的四个var和bbb = randomNumber(1,10)并在那四个随机i中显示bbb值,例如,[bbb = bb1或bbb = bb2或bbb = bb3或bbb = bb4] coz ,我必须选择bbb值来显示输出。

2 个答案:

答案 0 :(得分:1)

如果数组中的所有值都是唯一的,那么只需在使用它们时删除它们:

var list:Array = [1,2,3,4,5,6,7,8,9,10];

function getRandom(list:Array):*
{
    var i:int = Math.random() * list.length;
    return list.splice(i, 1)[0] || null;
}

var bb1:int = getRandom(list);
var bb2:int = getRandom(list);
var bb3:int = getRandom(list);
var bb4:int = getRandom(list);

答案 1 :(得分:1)

一个选项是随机元素的整个列表随机播放 - 然后您可以获取前N个元素,其中N是您需要的数字,并且知道这些元素将是唯一且随机选择的。如果使用大量的随机元素总列表,这比采样和删除要快。

如果找不到shuffle的标准实现,请执行Fisher-Yates Shuffle:http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm重要的是有n! shuffle可能出现的方式,而不是你错误地得到的n ^ n,如果你一次取一个元素并允许它与任何其他元素交换,包括之前的元素,否则某些配置将比其他元素更常见