java - 用java成对产生随机数

标签 java arrays random

我正在用 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。感谢您的回答。

最佳答案

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

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

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

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

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

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

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

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

关于java - 用java成对产生随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56028165/

相关文章:

Java在我的文本文件中放入随机符号而不是整数

jQuery 以错误的顺序打乱 div block

java - 如何停止多线程聊天客户端

java - 如何在Kotlin中换行?

arrays - ^ 运算符在 Visual C++ 中的使用

c - C中的for循环只返回数组的第一个值

java - 如何跨文件提取方法?

java - 使用带有 while 循环的 ToggleButton JavaFX

java - 在包内传递字节数组将变为空

c# - C#中唯一的4位随机数