Это о Math.random () и преобразовании в (int) - PullRequest
0 голосов
/ 22 сентября 2019

Почему переменные a и b не получают никаких значений?Я сделал так, чтобы 100-сторонние кости с числами 1-100 бросались 50.000 раз, и я хочу видеть, как часто они дают числа 1 и 100, но не получают никакого значения.Результат по-прежнему получается как a = 0 и b = 0.

package Atest;
import javax.swing.*;

public class Tärning5{
    public static void main(String[] arg){

        int rolls;
        double dice = (int) (Math.random()*100) + 1;
        int n = 0;
        int b=0, a=0;

        for(rolls=50000; n<=rolls; dice = (int) (Math.random()*100) + 1) {
            n++;

            if(dice == 100) 
                a = a++;
            else if (dice == 1) 
                b = b++;
        }

                JOptionPane.showMessageDialog(null, "Dice rolls " + rolls + " times"
                        + "\n"
                        + "\nDice landed on 100 " +a+" times"
                        + "\nDice landed on 1 "+b+" times");  
         }
    }

1 Ответ

0 голосов
/ 22 сентября 2019

Я бы посоветовал использовать java.util.Random для генерации случайного числа.Вы также можете упростить свой цикл, чтобы он был более простым.

    int a = 0;
    int b = 0;
    int rolls = 50000;
    Random random = new Random();
    for (int i = 0; i < rolls; i++) {
        int dice = random.nextInt(100) + 1;

        if (dice == 100) a += 1;
        if (dice == 1) b += 1;
    }

    System.out.println("a: " + a + ", b: " + b);

Условия в выражении «for» не относятся ни к чему, кроме счетчика итераций.Внутри цикла мы можем «смоделировать» бросок костей, используя существующий Random, чтобы создать следующий случайный тип int (в этом примере: в диапазоне от 1 до 100 включительно).

Пример вывода:

a: 502, b: 475
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...