掷骰子有50%的几率滚动6

时间:2017-03-27 07:34:14

标签: java random

所以我做了这种掷骰子的方法100次,有50%的几率滚动6。 基本的想法是在1到6之间有50%的奇数和50%的偶数,所以如果滚动偶数,系统打印6,否则它会打印1到5之间的随机数。你认为这是正确的吗? / p>

public static void printDiceRolls(Random randGenerator) {
    for (int i=0; i < 30; i++) {
        int temp;
        temp = randGenerator.nextInt(6) + 1;
        if (temp%2 == 0) {
            temp = 6;
        }
        else
            temp = randGenerator.nextInt(5) + 1;
        System.out.print(" " + temp + " ");
    }
}

4 个答案:

答案 0 :(得分:5)

生成1到10之间的随机数,包括两端。如果数字为1到5,则滚动该数字,否则,您滚动6.请注意,此方案有5次机会滚动6(即50%)和5 机会第1卷到第5卷(即另外50%)。

Random random = new Random();
int roll = random.nextInt(10) + 1;
if (roll > 5) {
    System.out.println("You rolled a 6");
}
else {
    System.out.println("You rolled a " + roll);
}

答案 1 :(得分:0)

您可以生成1到10之间的数字,如果大于6

,则打印6
for (int i = 0 ; i < 30 ; i++) {
    int temp = randGenerator.nextInt(10) + 1;
    if (temp > 6) {
        temp = 6;
    }
    System.out.print(" "+temp+" ");
}

答案 2 :(得分:0)

  

骰子滚动,有50%的几率滚动6

     

以下方法确保50%的骰子为6但不会   以其他方式......我认为这是确保的最佳方式   这6个切割正好50%,但不是交替顺序   在我看来,这使得结果更加可信。

在我看来,你只需要这样做:

public static void naturalDicingWithVariablePercentageOfSix(int totalDice,int probability)
{
    Random rand=new Random();
    List<Integer> diceList=new ArrayList<Integer>();

    System.out.println(""+( (int)(100/probability))+"% times that six being diced \n\n");
    for(int i=0;i<totalDice;i++)
    {
        if(i%probability==0)
            diceList.add(6);
        else
            diceList.add(rand.nextInt(5)+1);
    }
    Collections.shuffle(diceList);


    int notSixCount=0;
    int sixCount=0;
    for(Integer diceVal:diceList)
    {
        if(diceVal!=6)
            notSixCount++;
        else
            sixCount++;

        System.out.print(diceVal+" ");

    }
    System.out.println("\n\n Not 6 being diced : "+notSixCount+" times "+" and Six being diced :"+sixCount+"\n\n");
}

输入:

    naturalDicingWithVariablePercent6(100,2); // 50% times 6
    naturalDicingWithVariablePercent6(100,3); // 33% times 6
    naturalDicingWithVariablePercent6(100,4); // 25% times 6
    naturalDicingWithVariablePercent6(100,5); // 20% times 6
    naturalDicingWithVariablePercent6(100,6); // 16.67% times 6
  

输出:

六次切丁的50%次

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

未切割6次:50次,切割6次:50次

六次被切块的次数的33%

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

未切割6次:66次,6次切块:34次

六次切丁的25%是

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

未切割6次:75次,6次切块:25次

六次切丁的20%

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

不是6被切块:80次,6次被切块:20

六个被切成小块的16%

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

不是6被切块:83次,6次被切块:17

答案 3 :(得分:0)

不要滚动六面模具,滚动十面模具。模具的侧面标有[1,2,3,4,5,6,6,6,6,6]。为每个模具辊选择一个随机面。