【问题标题】:How to shuffle an array of N size without any imports如何在没有任何导入的情况下打乱 N 大小的数组
【发布时间】: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


【解决方案1】:
int []a = new int[]{1,2,3,4,5,6,7,8,9};
for (int i = 0 ; i < a.length; i++)
{
    int index = (int)(System.nanoTime() % a.length);
    int tmp = a[index];
    a[index] = a[i];
    a[i] = tmp;
}

【讨论】:

猜你喜欢
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 2021-10-08
  • 1970-01-01
  • 2012-07-09
  • 2018-11-10
  • 1970-01-01
相关资源
最近更新 更多