Это кажется довольно странным упражнением для попытки без массивов. Это возможно, но я не думаю, что это особенно поучительно для изучения Java, так как это скорее математическое упражнение, чем программирование.
Чтобы сгенерировать 6 различных случайных чисел в диапазоне 1-49, вам в основном нужно решить для каждого из этих 49 чисел, выбирать его или нет, с ограничением, что вы выберете только 6 чисел. Итак, вы ищете, чтобы определить одну из choose(49, 6)
возможных комбинаций.
Итак, вы можете сделать это так:
int numToPick = 6;
for (int i = 1; i <= 49; ++i) {
if (shouldPick(i, numToPick)) {
System.out.println(i);
--numToPick;
}
}
(я использовал цикл for; но вы всегда можете переписать цикл for как цикл while, если это все, что вы можете использовать).
Вопрос только в том, как реализовать эту функцию shouldPick
: она возвращает логическое значение true, означающее, что вы должны выбрать ее, и напечатает ее; или false, чтобы означать, что вы не будете.
Это будет вероятностная функция (т.е.
он будет использовать генератор случайных чисел), или он не будет каждый раз давать разные наборы чисел.
Математика для определения формы этой функции довольно забавная, а окончательная реализация - тривиально; но было бы неинтересно, если бы я дал здесь ответ.
(Но я могу заверить вас, что я это реализовал, изменив только одну строку в приведенном выше фрагменте; 2, если вы считаете объявление генератора случайных чисел).