【发布时间】:2019-09-23 09:49:51
【问题描述】:
目标是洗牌一个 N 大小的数组。代码中不能使用导入。即随机
我可以使用如下所示的导入轻松做到这一点,尽管这些是被禁止的。
private static void shuffleArray(int[] array)
{
int index, temp;
Random random = new Random();
for (int i = array.length - 1; i > 0; i--)
{
index = random.nextInt(i + 1);
temp = array[index];
array[index] = array[i];
array[i] = temp;
}
}
最终目标是以随机顺序对数组进行洗牌。伪随机完全没问题。
【问题讨论】:
-
考虑使用
Math.random()获取随机索引。 -
Math.random() 不能使用。有没有办法在不使用 this 的情况下获得 0 - n 之间的随机数?
-
没有进口?没问题!将
Random random = new Random();更改为java.util.Random random = new java.util.Random();并删除导入语句。 -
@Javasaurusrex:当然,您需要实现自己的(伪)随机数生成器。线性同余不是太难。
标签: java arrays math random shuffle