【问题标题】:how do I make first half of array is random integers from 0 to 7, second half is random members from first half of array but can only be picked once如何使数组的前半部分是从 0 到 7 的随机整数,后半部分是数组前半部分的随机成员,但只能选择一次
【发布时间】:2019-10-05 12:43:34
【问题描述】:

我想制作一个二维数组,例如 {{2,5,5,2,4,7,6},{5,2,6,7,4,5,2}} 数组的前半部分是随机整数,数组的后半部分是数组前半部分的随机成员。这样我就有了成对的每个随机数。到目前为止,这是我的代码,它给了我一个带有随机数的数组。我不知道该怎么做的部分是数组的后半部分。请帮忙!

        private int[][] board;
        private int[] arr = {1,2,3,4,5,6,7,8};
        public Board() {
            board = new int[DEFAULT_SIZE][DEFAULT_SIZE];
            for (int i=0;i<board.length;i++) {
            for (int j=0;j<board.length;j++) {
board[i][j] = (int) (Math.random()*10);
            }
            }

【问题讨论】:

  • 您想要的是随机播放您的原始随机列表的副本。查看Collections.shuffle 的文档;你可以自己实现相同的算法,或者如果你不介意在数组和列表之间转换的麻烦,就使用Collections.shuffle
  • 但是我将如何制作一个整数数组列表 2d?或者我如何在数组上实现它?我很困惑我很抱歉
  • 假设您只需要整个后半部分是整个前半部分的打乱版本,从 all 的行中取 all 的数字上半场并将它们放在一个 ArrayList 中进行洗牌。然后将打乱后的数字依次读出,分配到后半部分的行列中。

标签: java arrays random


【解决方案1】:

您可以使用 Random.nextInt() 获取随机索引,然后使用它从第一个数组中获取随机数:

int randomIndex = Random.nextInt(arr.length);
int randomVal = arr[randomIndex];

【讨论】:

  • 我试过了,它给了我可以复制的数组的随机成员,但我只想要随机成员一次,就好像数组的后半部分是数组的前半部分但是被洗牌了.
  • 那你可以试试这个:Integer[] arr = {2,5,5,2,4,7,6}; Collections.shuffle(Arrays.asList(arr)).
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-21
  • 2013-01-04
  • 2022-01-15
  • 2017-09-23
  • 2020-08-30
  • 1970-01-01
  • 2022-01-09
相关资源
最近更新 更多