-2

I am generating a random number between 1 and 6. And I have an integer value with a value of 0 (int number1 = 0;). I need to add them in a loop. Each round of the loop the random number will be generated again and add on top of the previous sum. How can I write in JAVA (console).

will continue until a sum of 100

int number1 = 0;
int number2 = (int) (Math.random () * 6 + 1);

for example: if number2 come 3 number1 (0) + number2 (3) = 3
and next tour if number2 come 4 number1 (3) + number2 (4) = 7

5 Answers5

1

WHILE LOOP:

int number1 = 0;
int loop = 6;

while (loop > 0){
    number1 += (int) (Math.random () * 6 + 1);
    loop--;
}       

FOR LOOP:

int number1 = 0;
int loop = 6;

for (int i = 0; i < loop; i++){
    number1 += (int) (Math.random() * 6 + 1);
}
0

A simple for loop will do. You didn't specify when you want it to end so here is an example that runs 10 iterations:

int number1 = 0;
for(int i = 0; i < 10; ++i) {
    number1 += (int)(Math.random() * 6 + 1);
}

You can also user Random:

int number1 = 0;
Random random = new Random();
for(int i = 0; i < 10; ++i) {
    number1 += random.nextInt(6) + 1;
}
DarkMatter
  • 1,007
  • 7
  • 13
0

Method 1 - Using do-while loop

int sum =0;
do{
    sum += (int) (Math.random () * 6 + 1);
  }while(sum < 100);
System.out.println("Sum = " + sum);

Method 2 - Using while loop

int sum =0;
while(sum < 100){
     sum += (int) (Math.random () * 6 + 1);
}
System.out.println("Sum = " + sum);

Method 3 - Using for loop

int sum;
for(sum = 0; sum < 100;){
    sum += (int) (Math.random () * 6 + 1);
}
System.out.println("Sum = " + sum);
Zach_Mose
  • 357
  • 3
  • 7
0

you can write a simpler solution with just one variable:

for(int i = 0; i <= 6){
    number += (int) (Math.random () * 6 + 1);
}
0

There can be many ways to do it. A simple way to do it is by using an infinite loop which you can break when number1 == 100. It's also important to check if (number1 > 100) after adding a random number and remove that random number if it true.

public class Main {
    public static void main(String[] args) {
        int number1 = 0;
        while (true) {
            System.out.println("Current value: " + number1);
            if (number1 == 100) {
                break;
            }
            int random = (int) (Math.random() * 6 + 1);
            number1 += random;
            if (number1 > 100) {
                number1 -= random;
            }
        }
    }
}

A sample run:

Current value: 0
Current value: 4
Current value: 9
Current value: 13
Current value: 19
Current value: 24
Current value: 29
Current value: 35
Current value: 39
Current value: 43
Current value: 48
Current value: 51
Current value: 57
Current value: 58
Current value: 62
Current value: 66
Current value: 70
Current value: 74
Current value: 79
Current value: 85
Current value: 88
Current value: 93
Current value: 97
Current value: 97
Current value: 98
Current value: 98
Current value: 100

To avoid casting the generated random numbers to int, I recommend you use Random#nextInt(int bound) as shown below:

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        int number1 = 0;
        Random rand = new Random();
        while (true) {
            System.out.println("Current value: " + number1);
            if (number1 == 100) {
                break;
            }
            int random = rand.nextInt(6) + 1;
            number1 += random;
            if (number1 > 100) {
                number1 -= random;
            }
        }
    }
}
Arvind Kumar Avinash
  • 71,965
  • 6
  • 74
  • 110