【问题标题】:Java Random between 1, 2 and 31、2 和 3 之间的 Java 随机数
【发布时间】:2014-01-15 21:38:20
【问题描述】:

无法获得三个整数

for (int i = 0; i < 10; i++){
    Random rand = new Random(3)+1;
    if (rand == 1){
        hand.takeCard(one);
    } else if (rand == 2){
        hand.takeCard(two);
    } else if (rand == 3){
        hand.takeCard(three);
    }
}

我该怎么做? 谢谢。

【问题讨论】:

  • 你想做什么?
  • 使用== 将引用类型与原始类型进行比较将无法编译(在这种情况下)。
  • new Random(3) 不会像您认为的那样做。阅读Random 的文档。
  • 尝试加牌。如果为 1,则添加卡 1,如果为 2,则添加卡 2,以此类推。

标签: java loops random


【解决方案1】:

了解Random.nextInt(int n)

返回一个伪随机、均匀分布的0(包括)和指定值(不包括)之间的int值,从这个随机数生成器的序列中提取

使用示例

int rand = new Random().nextInt(3);
System.out.println(i);

在你的情况下:

Random randomGenerator = new Random();

for (int i = 0; i < 10; i++){
    int rand = randomGenerator.nextInt(3) + 1;
    if (rand == 1){
        hand.takeCard(one);
    } else if (rand == 2){
        hand.takeCard(two);
    } else if (rand == 3){
        hand.takeCard(three);
    }
}

【讨论】:

    【解决方案2】:
    int myNumber=0;//create integer that holds your generated number
       Random rand = new Random(); //create random number generator
    for (int i = 0; i < 10; i++){
    
                       myNumber=rand.nextInt(3);//this assign a new random value to your integerrandom generator is 0 based so you generate numbers 0,1,2 if you put 3 as parameter.Bud you can fix that by adding + 1 to it after closing brackets or just put 0for your first card
                if (myNumber== 0){
                    hand.takeCard(one);
                } else if (myNumber== 1){
                    hand.takeCard(two);
                } else if (myNumber== 2){
                    hand.takeCard(three);
                }   
            }
    

    【讨论】:

    • 请注意,您正在生成一个介于 0 和 2 之间的随机数。
    • 成功了,谢谢。但是做了一个改变,而不是 nyNumber == 1 使用 myNumber == 0,递减每个并且它起作用了。谢谢。
    【解决方案3】:

    检查这是否适合你

    for(int i = 0; i < 10; i++ ) {
            int rand = (int)(Math.random() * 3) + 1;
           if (rand == 1){
                    hand.takeCard(one);
                } else if (rand == 2){
                    hand.takeCard(two);
                } else if (rand == 3){
                    hand.takeCard(three);
                } 
           }
    

    【讨论】:

      猜你喜欢
      • 2013-01-29
      • 1970-01-01
      • 2012-09-27
      • 2014-06-23
      • 1970-01-01
      • 2011-08-11
      • 2013-12-21
      • 2012-11-03
      相关资源
      最近更新 更多