加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何使用Java生成1到6之间的6个随机数?

发布时间:2020-12-15 02:02:11 所属栏目:Java 来源:网络整理
导读:我遇到一个问题,在 Java中生成1到6之间的6个随机数.所有数字都必须是唯一的.当我输入kolon值5时,数组应该是这样的: 1 2 3 4 5 61 2 3 4 5 61 2 3 4 5 61 2 3 4 5 6 我不希望程序生成相同的两个数字.这有什么不对? 相关代码: public static void main(Stri
我遇到一个问题,在 Java中生成1到6之间的6个随机数.所有数字都必须是唯一的.当我输入kolon值5时,数组应该是这样的:

1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6

我不希望程序生成相同的两个数字.这有什么不对?

相关代码:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Please enter row quantity: ");

    int kolon = input.nextInt();

    Integer[][] dizi_asil = new Integer[kolon][6];

    for (int i = 0; i < kolon; i++) {
        Integer[] dizi = new Integer[6];

        for (int j = 0; j < 6; j++) { 

            dizi[j] = (int) ((Math.random() * 6) + 1);  

            for (int u = 0; u < 1; u++) { 

                for (int k = 0; k < j; k++) { 

                    while (dizi[k] == dizi[j]) { 
                        dizi[j] = (int) ((Math.random()* 6)  + 1);
                        u++;
                    }

                }
            }
            dizi_asil[i][j] = dizi[j];
        }
        Arrays.sort(dizi_asil[i]);
    }

    for (int i = 0; i < dizi_asil.length; i++) {
        for (int k = 0; k < dizi_asil[i].length; k++) {
            System.out.print(dizi_asil[i][k] + "t");
        }
        System.out.println();
    }

解决方法

一个非常简单的修复 – 取代你;和你 – ;.将使循环停止,– 将使其继续.

虽然我建议更像下面的东西.我希望这很容易理解.

Integer[] dizi = new Integer[6];

for (int j = 0; j < 6; j++)
{
  boolean isValid;
  do
  {
     dizi[j] = (int) ((Math.random() * 6) + 1);
     isValid = true;
     for (int k = 0; isValid && k < j; k++)
        if (dizi[k] == dizi[j])
           isValid = false;
  }
  while (!isValid);
  dizi_asil[i][j] = dizi[j];
}

我还建议the Random class,它有一个nextInt(int)方法,它比(int)更好((Math.random()* 6)1).

但改组可能是一种更快捷的方式.要么像其他答案一样使用API??,要么查看Fisher-Yates / Knuth shuffle以获得简单的随机播放算法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读