Товарищи как поместить Random в цикл for что бы каждый раз когда он вызывался Random становилось новым числом?

242
16 ноября 2017, 02:20

В итоге должен был получиться код который перебирает числа пока не найдет такое которое при перестановке цифр будет в 3 раза больше исходного

import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
public class finali {
    static ArrayList<String> fig = new ArrayList<String>();
    static ArrayList<String> fig1 = new ArrayList<String>();
    static int j, go1, go, a, b, c, d;
    static Random ran = new Random();
    public static void dat() {
        a = ran.nextInt(9);
        b = ran.nextInt(9);
        c = ran.nextInt(9);
        d = ran.nextInt(9);
        fig.add(String.valueOf(a));
        fig.add(String.valueOf(b));
        fig.add(String.valueOf(c));
        fig.add(String.valueOf(d));
        go = Integer.parseInt(fig.get(0) + fig.get(1) + fig.get(2) + fig.get(3));
        go1 = Integer.parseInt(fig.get(0) + fig.get(1) + fig.get(2) + fig.get(3));
        for (int fin = 1; go != go1 * 3; fin++) {
            Random ron = new Random();
            int r = ron.nextInt(4);
            Collections.swap(fig, 0, r);
            Collections.swap(fig, 1, r);
            Collections.swap(fig, 2, r);
            Collections.swap(fig, 3, r);
            go = Integer.parseInt(fig.get(0) + fig.get(1) + fig.get(2) + fig.get(3));
            System.out.println(go);
            if (fin == 1988) {
                j++;
                System.out.println("круг" + j);
                Thread ahka = new Thread();
                try {
                    ahka.sleep(10000);
                    break;
                } catch (Exception e) {
                }
            }
        }
    }
    public static void main(String args[]) {
        dat();
        for (; go != go1 * 3; ) {
            dat();
        }
    }
}
Answer 1

Вместо того чтобы перебирать случайные числа до желаемого лучше всего надо просто получить рандом число с диапозоном.

ron.nextInt(max - min + 1) + min

То есть тут вместо min в задаете число три раза больше исходного и вместо max максимальное число которое вы хотите.

И надо объявлять Random ron = new Random(); за передалами цикла for, потому что при каждой итерации создается новый объект, а это лишние затраты. Вместо этого вам надо пользоваться уже обявленным объектом.

Answer 2

каждый раз в цикле новое значение num

int num;
Random rdm = new Random();
for (int i = 0; i < 10 ; i++) {
    num = rdm.nextInt(10);
}
READ ALSO
Проверка электронной подписи в Java

Проверка электронной подписи в Java

В подписях и криптографии я новичок, поэтому заранее извиняюсь, если вопрос покажется глупымВ общем есть подпись в формате p7s (signedData) и есть...

211
Проблема с &ldquo;подкапотными&rdquo; процессами SimpleCursorAdapter-а

Проблема с “подкапотными” процессами SimpleCursorAdapter-а

ОбобщенноВ фрагменте есть ListView, к нему подключен кастомный адаптер extends SimpleCursorAdapter

233
Копирование ArrayList во внешнее хранилище

Копирование ArrayList во внешнее хранилище

Как можно копировать ArrayList в внешнее хранилище, чтобы это было доступно пользователю

185
Потоки и Thread.sleep()

Потоки и Thread.sleep()

Пытаюсь написать планировщикНеобходимо чтобы два потока (функции LoopGetTask и LoopExecTask) выполнялись параллельно, но Thread

265