Генерация случайных чисел между 2 значениями в 2d массиве

1

Недавно я начал изучать Java и имел множество проблем. Я пробовал поиск на веб-сайте, но я не могу получить ответ, который мне нужен. Извиняюсь, если есть ответ, и ошибка с моей стороны.

Сначала взгляните на мой код:

import java.util.Random;


public class Test {
    public static void main (String args[]) {
        Random num = new Random();
        int[][] multi = new int [3][];
        int test = 1;             // comments for stackoverflow questions   
        int test2 = 10;           // how can i create something that will range from 1-9?
        int test3 = test2-test;   // trying this has always generated 0-9 instead

    multi[0] = new int [] {num.nextInt(test3), num.nextInt(test3), num.nextInt(test3)};
    multi[1] = new int [] {num.nextInt(test3), num.nextInt(10), num.nextInt(10)};
    multi[2] = new int [] {test3, test3, num.nextInt(10)};

// PLEASE IGNORE THE 2D ARRAYS, it just something I am testing on

    int rows = 3;
    int columns = 3;

    for(int i=0; i<rows; i++) {
        for (int j=0; j<columns; j++) {
            System.out.print(multi[i][j] + "\t");
        }
        System.out.println();
    }
    }   
}

Я пытаюсь имитировать джек-пот, в котором я хочу генерировать числа от 1 до 9 во всем 2D-массиве, который я создал. Однако я не знаю, как генерировать числа от 1 до 9, у меня есть только диапазоны 0-10 и 0-9

Моя идея состоит в том, что, как только я закончу этот 2D-массив диапазонов 1-9, я мог бы использовать определенное количество операторов if-else, чтобы заставить пользователя выиграть джек-пот всякий раз, когда центральная строка или диагональные строки имеют 3 одинаковых числа.

Я также попытался использовать:

int test3 = num.nextInt(test2-test+1)-test;

Это будет генерировать числа между 1-9, но если бы я использовал все это, он всегда будет генерировать одинаковые числа для меня, в противном случае это дает исключение из-за отрицательных чисел.

  • 1
    Попробуйте добавить «1» к вашему случайному результату, чтобы изменить «нижнюю» границу.
  • 0
    @Jägermeister Jägermeister что ты имеешь ввиду?
Показать ещё 1 комментарий
Теги:
multidimensional-array

3 ответа

1

если вам нужно только случайное число между включенными 1 и 9, это должно помочь:

Random r = new Random();
int num = r.nextInt(9) + 1;
0

Чтобы создать значение от 1 до 9:

Random random = new Random();
int n = random.nextInt(9) + 1;

Чтобы применить это в своем случае:

multi[0] = new int [] 
   {num.nextInt(9) + 1, num.nextInt(9) + 1, num.nextInt(9) + 1};
  • 0
    Боже ты мой!!! Спасибо! так просто, как это выглядит / звучит, это работает отлично. Я никогда не думал, что использование простого «+1» сработает сразу. Я думал, что это была проблема целых чисел, которые я использовал .....
  • 0
    Может быть, вы только что подумали, что Random.nextInt() всегда возвращает значение не менее 1? ;) Я предлагаю вам прочитать Java API, он очень хорош для изучения того, что вы можете делать с его стандартными библиотеками. docs.oracle.com/javase/7/docs/api/java/util/...
0

Вы можете генерировать случайное число следующим образом:

Math.rand() * i // Generate number between 0 and i-1

Или

  Math.rand() * i + 1 // Generate number between 1 and i
  • 0
    Он уже генерирует число, которое звучит, но это 0-9, когда он хочет 1-9.
  • 0
    @ Дэнни Спасибо, проверьте обновление

Ещё вопросы

Сообщество Overcoder
Наверх
Меню