Как я могу сгенерировать случайное число в определенном диапазоне?

Как я могу создать приложение, которое генерирует случайное число в Android с помощью Eclipse, а затем отображает результат в поле TextView? Случайное число должно находиться в диапазоне, выбранном пользователем. Итак, пользователь вводит максимальное и минимальное значения диапазона, а затем я вывожу ответ.


person user3182651    schedule 10.01.2014    source источник


Ответы (8)


Чтобы расширить то, что сказал Рахул Гупта:

Вы можете использовать функцию Java int random = Random.nextInt(n).
Она возвращает случайное число int в диапазоне [0, n-1].

То есть, чтобы получить диапазон [20, 80], используйте:

final int random = new Random().nextInt(61) + 20; // [0, 60] + 20 => [20, 80]

Чтобы обобщить больше:

final int min = 20;
final int max = 80;
final int random = new Random().nextInt((max - min) + 1) + min;
person Phantômaxx    schedule 10.01.2014
comment
вы можете взглянуть на это: stackoverflow.com/q/46638945/6144372 Это связано с Random.nextInt(n). - person Hammad Nasir; 09.10.2017

Random r = new Random();
int i1 = r.nextInt(45 - 28) + 28;

Это дает случайное целое число от 28 (включительно) до 45 (не включая), одно из 28, 29,..., 43, 44.

person Narendra Sorathiya    schedule 15.06.2016
comment
ответ скопирован отсюда: stackoverflow.com/a/6029519/6144372 По крайней мере, подумайте о том, чтобы отдать должное исходному ответу. - person Hammad Nasir; 09.10.2017

Также с уровня API 21 это возможно:

int random = ThreadLocalRandom.current().nextInt(min, max);
person larsaars    schedule 12.08.2018
comment
Здесь слишком часто возвращается одно и то же число. Плохой опыт! - person 1111161171159459134; 11.01.2019
comment
согласен с @1111161171159459134 - person Eren; 30.06.2020
comment
да, действительно, я этим тоже больше не пользуюсь. Случайный класс лучше - person larsaars; 30.06.2020

"пользователь - это тот, кто выбирает максимальное количество и минимальное количество?" Что вы подразумеваете под этой строкой?

Вы можете использовать функцию Java int random = Random.nextInt(n). Это возвращает случайное целое число в диапазоне [0, n-1]).

и вы можете установить его в своем текстовом представлении, используя метод setText()

person Rahul Gupta    schedule 10.01.2014
comment
Ошибка: Невозможно сделать статическую ссылку на нестатический метод nextInt(int) из типа Random - person Prasad; 29.12.2014
comment
int random = Random.nextInt(5); - person Prasad; 29.12.2014
comment
Ваша ошибка не из-за моего кода. Покажите класс, в котором вы написали этот код. Эта ошибка обычно возникает в статическом методе - person Rahul Gupta; 29.12.2014
comment
это не статический метод, и я использовал его в асинхронной задаче () - person Prasad; 31.12.2014
comment
Опубликуйте свой код, в котором вы получаете эту проблему, а также номер строки - person Rahul Gupta; 02.01.2015

Генератор случайных чисел в Android Если вы хотите узнать о генераторе случайных чисел в Android, прочтите эту статью до конца. Здесь вы можете получить всю информацию о генераторе случайных чисел в Android. Генератор случайных чисел в Android

Вы должны использовать этот код в своем java-файле.

Random r = new Random();
                    int randomNumber = r.nextInt(100);
                    tv.setText(String.valueOf(randomNumber));

Я надеюсь, что этот ответ может быть полезен для вас. Если вы хотите узнать больше об этой статье, вам следует прочитать эту статью. Генератор случайных чисел

person sumit singh    schedule 11.07.2018
comment
(Из обзора: вторая ссылка, которую вы разместили, полностью не работает. Пожалуйста, отредактируйте свой ответ и либо исправьте его, либо удалите его. Спасибо.) - person sɐunıɔןɐqɐp; 11.07.2018

Итак, вам нужно следующее:

int random;
int max;
int min;

... где-то в вашем коде поместите метод для получения минимума и максимума от пользователя, когда он нажимает кнопку "Отправить", а затем используйте их в следующей строке кода:

random = Random.nextInt(max-min+1)+min;

Это установит случайное число между выбранным пользователем минимумом и максимумом. Затем вы будете делать:

TextView.setText(random.toString());
person BobbyD17    schedule 10.01.2014

Вы можете использовать Если Random. Например, это генерирует случайное число от 75 до 100.

final int random = new Random().nextInt(26) + 75;
person Satyam_Rai_Dev    schedule 14.06.2018

Код ниже поможет вам генерировать случайные числа между двумя числами в заданном диапазоне:

private void generateRandomNumbers(int min, int max) {
    // min & max will be changed as per your requirement. In my case, I've taken min = 2 & max = 32

    int randomNumberCount = 10;

    int dif = max - min;
    if (dif < (randomNumberCount * 3)) {
        dif = (randomNumberCount * 3);
    }

    int margin = (int) Math.ceil((float) dif / randomNumberCount);
    List<Integer> randomNumberList = new ArrayList<>();

    Random random = new Random();

    for (int i = 0; i < randomNumberCount; i++) {
        int range = (margin * i) + min; // 2, 5, 8

        int randomNum = random.nextInt(margin);
        if (randomNum == 0) {
            randomNum = 1;
        }

        int number = (randomNum + range);
        randomNumberList.add(number);
    }
    Collections.sort(randomNumberList);
    Log.i("generateRandomNumbers", "RandomNumberList: " + randomNumberList);
}
person Chitransh Mathur    schedule 28.05.2019