我需要在 AS3 中生成一个从 1 到 100 的随机数,不会生成两次。所以我需要生成每个数字,直到所有数字都完成。我怎样才能做到这一点?
问问题
738 次
3 回答
3
用数字 1 到 100 填充数组。
随机洗牌(使用 Fisher-Yates 洗牌)。
从第一个数组索引开始取每个数字......
于 2013-09-10T10:13:32.977 回答
1
用数字 1-100 填充数组“_randomNumbers”。每次您需要一个号码时,请使用以下命令:
if (_randomNumbers.length>0) {
newRandomNumber = _randomNumbers.splice( Math.floor(Math.random(_randomNumbers.length)), 1 )[0];
}
于 2013-09-10T14:19:49.267 回答
0
查看更多详细信息
class NonRepeatedPRNG {
private final Random rnd = new Random();
private final Set<Integer> set = new HashSet<>();
public int nextInt() {
for (;;) {
final int r = rnd.nextInt();
if (set.add(r)) return r;
}
}
}
于 2013-09-10T10:12:51.150 回答