【问题标题】:Produce random numbers in pairs with java用java成对产生随机数
【发布时间】:2019-09-25 10:40:49
【问题描述】:

我正在用java开发一个记忆游戏作为我的作业。我想在成对的盒子数量之间产生随机数 1。

public void GenerateBoxesGrid(JPanel jp){
       jp.setLayout(new GridLayout(2,4));
       for (int i = 0; i < numberofboxes; i++) {
            int num = generator.nextInt(5);
            button[i] = new JToggleButton();
            button[i].setText(Integer.toString(num));
            button[i].setSize(1,1);
            jp.add(button[i]);
            button[i].setBackground(defaultColor);
            button[i].setVisible(true);

生成器对象正在生成随机数,但没有对。例如,当用户想要 6 个框时,屏幕上应该是 1,1,2,2,3,3。感谢您的回答。

【问题讨论】:

  • 感谢您的反馈,我会考虑您所有重要的 cmets :)。
  • 您需要更多信息吗?你知道,这就像两天,没有任何地方的支持,没有接受。请不要在这里留下问题。当你得到你需要的东西时:接受并继续前进。如果事情不清楚,要求澄清,把事情整理好,然后接受并继续;-)

标签: java arrays random


【解决方案1】:
public List<Integer> generateNumbers(int count) {
  List<Integer> numbers = IntStream.range(1, count + 1 )
                                   .boxed()
                                   .collect(Collectors.toList());
  numbers.addAll(numbers);
  Collections.shuffle(numbers);
  return numbers;
}

1) 生成数字范围

2) 将所有生成的数字加倍

3) 随机播放

4) 使用数组中的数字迭代和绘制单元格

【讨论】:

    【解决方案2】:

    不,您不想要“成对的随机数”。

    1、1、2、2、3、3 中只有 3 个“随机”数字:1、2 和 3。

    换句话说:最简单的方法是生成三个随机数,并使用每个数字两次。没有必要“配对”任何东西。只需创建 n 个随机数字,然后为每个数字创建 两个 按钮。当然,为了更轻松地创建按钮,您可以这样做:

    • n 个随机数创建一个列表/数组
    • 创建一个 second 列表,其中包含 n 个插槽,这是第一个列表的副本
    • 现在随机播放第二个列表
    • 最后:编写循环,在循环中,对于每一行,从每个列表中选择一个条目

    我认为上述方法是生成随机放置在该表中的这种“对”表的“最简单”方法。 (所有对都在同一行的记忆游戏并不是很有趣,你知道的)

    提示:到目前为止您忘记的部分:您应该确保那些 n 随机数是不同的。或者更准确地说:您应该考虑是否要允许 1,1,2,2,1,1 ...。

    最后:如果你想做一个“真正的”记忆谜题,那么事情是这样的:

    • 创建 n/2 个随机数,将每个值放入初始列表 两次
    • 你随机播放初始列表
    • 现在:您迭代该初始列表并使用您能想到的 n 个成员填充 whatever 网格(可以是 n/2 行,2 列,或 n 行,例如只有 1 列)

    【讨论】:

      猜你喜欢
      • 2012-09-24
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 2015-12-06
      • 1970-01-01
      相关资源
      最近更新 更多