-2

我想在 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) 并在这四个 var 中随机显示 bbb 值,即 [bbb=bb1 or bbb=bb2 or bbb=bb3 or bbb=bb4] coz ,我必须选择 bbb 值才能显示输出。

4

2 回答 2

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);
于 2013-06-24T04:03:18.293 回答
1

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

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

于 2013-06-24T05:05:28.600 回答