Группы случайных чисел

#java #android-studio

#java #android-studio

Вопрос:

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

 tv1 = (TextView) findViewById(R.id.textView);
btn1 = (Button) findViewById(R.id.button);

btn1.setOnClickListener(new View.OnClickListener() {
     @Override
            public void onClick(View v) {

                final java.util.Random rand = java.util.concurrent.ThreadLocalRandom.current();
                new java.util.Timer().scheduleAtFixedRate(new java.util.TimerTask() {
                    @Override
                    public void run() {
                        tv1.setText(rand.nextInt(6)   "-"   rand.nextInt(6)   "-"   rand.nextInt(6));
                    }

                }, 0, 3000);


            }
        });

    }
}
 

Возможно ли, что приложение вместо чисел от 6 до 0 будет принимать готовые наборы чисел, которые я создаю?

Комментарии:

1. например. (1-2-3, 1-3-5, 1-5-6). что-то вроде этого, этот код иногда показывает мне нежелательные комбинации

2. Нет, нет . Я имею в виду, что иногда приложение показывает мне (3-5-4 или 5-6-6), и я не хочу, чтобы эти типы комбинаций отображались на экране

3. Эти последовательности отображаются в случайных последовательностях. Их удаление сделало бы последовательности менее случайными.

Ответ №1:

Реализуйте приведенный ниже метод внутри вашего класса activity, и вы можете использовать его для достижения ваших требований:

 // To get the numbers from 0 to 6 use upperBound as 7.
private static String getResult(int lowerBound, int upperBound){
        final ThreadLocalRandom rand = ThreadLocalRandom.current();
        List<Integer> list = new ArrayList<Integer>();
        int number;

        for(int counter = 0; counter < 3;counter  ){
            number = rand.nextInt(lowerBound, upperBound);
            while(list.contains(number)) {
                number = rand.nextInt(lowerBound, upperBound);
            }
            list.add(number);
        }
        Collections.sort(list); //Sorts the list
        return list.get(0)   "-"   list.get(1)   "-"   list.get(2);
    }
 

В вашем TextView tv1 внутри run() метода; просто вызовите этот метод, что-то вроде:

 tv1.setText(getResult(0, 7)); // Remember in the sequence; 0 is inclusive and 7 is exclusive.
 

Вы можете увидеть пример запуска здесь.

Комментарии:

1. можно ли создать папку, ввести туда свои цифровые последовательности, и приложение возьмет оттуда то, что нужно рандомизировать?

2. Не совсем так. Я хочу создать в Android Studio что-то вроде папки с номерами, которые я хочу показать на дисплее. Например, я создаю папку с номерами (1, 4, 534, 94,) и приложение будет разыгрывать жребий только по этим номерам

3. Я не понимаю ;/

Ответ №2:

Если вы хотите извлекать случайные числа из a List , вы можете использовать rand.nextInt(list.size()) для получения случайного индекса для извлечения числа, поскольку аргумент верхней границы for nextInt является эксклюзивным.

 final java.util.List<Integer> numbers = java.util.Arrays.asList(1, 4, 534, 94);
btn1.setOnClickListener(new View.OnClickListener() {
     @Override
            public void onClick(View v) {
                final java.util.Random rand = java.util.concurrent.ThreadLocalRandom.current();
                new java.util.Timer().scheduleAtFixedRate(new java.util.TimerTask() {
                    @Override
                    public void run() {
                        tv1.setText(numbers.get(rand.nextInt(numbers.size()))   "-"   numbers.get(rand.nextInt(numbers.size()))   "-"   numbers.get(rand.nextInt(numbers.size()));
                    }
                }, 0, 3000);
            }
        });
    }
}