Java генерирует случайное число между двумя заданными значениями [duplicate]

    

На этот вопрос уже есть ответ здесь:

    

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

Я могу сгенерировать случайное число со следующим:

Random r = new Random();

for(int i = 0; i < a.length; i++){
    for(int j = 0; j < a[i].length; j++){
        a[i][j] = r.nextInt();
    }

}

Однако как я могу сгенерировать случайное число от 0 до 100 (включительно)?

109 голосов | спросил MusTheDataGuy 11 MarpmFri, 11 Mar 2011 13:15:31 +03002011-03-11T13:15:31+03:0001 2011, 13:15:31

7 ответов


0

Вы можете использовать, например, r.nextInt(101)

Для более общего "между двумя числами" используйте:

Random r = new Random();
int low = 10;
int high = 100;
int result = r.nextInt(high-low) + low;

Это дает вам случайное число от 10 (включительно) до 100 (исключая)

ответил Erik 11 MarpmFri, 11 Mar 2011 13:17:22 +03002011-03-11T13:17:22+03:0001 2011, 13:17:22
0

Если предположить, что верхняя граница - это верхняя граница, а нижняя - нижняя граница, тогда вы можете сделать случайное число r между двумя границами с помощью:

int r = (int) (Math.random() * (upper - lower)) + lower;
ответил user2512642 23 J0000006Europe/Moscow 2013, 03:49:08
0
int Random = (int)(Math.random()*100);

если вам нужно сгенерировать более одного значения, просто используйте цикл for для этого

 for (int i = 1; i <= 10 ; i++)
       {
        int Random = (int)(Math.random()*100);
        System.out.println(Random);
       }

Если вы хотите указать более приличный диапазон, например, от 10 до 100 (оба находятся в диапазоне)

код будет таким:

   int Random =10 +  (int)(Math.random()*(91));
   /* int Random = (min.value ) + (int)(Math.random()* ( Max - Min + 1));
  *Where min is the smallest value You want to be the smallest number possible to       
  generate and Max is the biggest possible number to generate*/
ответил Vytautas 23 +04002011-10-23T00:55:20+04:00312011bEurope/MoscowSun, 23 Oct 2011 00:55:20 +0400 2011, 00:55:20
0

Как это,

Random random = new Random();
int randomNumber = random.nextInt(upperBound - lowerBound) + lowerBound;
ответил 18 Jpm1000000pmSat, 18 Jan 2014 16:58:05 +040014 2014, 16:58:05
0

Используйте Random.nextInt (целое) .

В вашем случае это будет выглядеть примерно так:

a[i][j] = r.nextInt(101);
ответил MAK 11 MarpmFri, 11 Mar 2011 13:20:11 +03002011-03-11T13:20:11+03:0001 2011, 13:20:11
0

В Java нет генератора случайных чисел между двумя значениями так же, как в Python. Фактически для генерации Random требуется всего одно значение. Затем вам нужно добавить ОДИН ОПРЕДЕЛЕННЫЙ НОМЕР к сгенерированному номеру, что приведет к тому, что число будет в пределах диапазона. Например:

package RandGen;

import java.util.Random;

public class RandGen {


    public static Random numGen =new Random();

public static int RandNum(){
    int rand = Math.abs((100)+numGen.nextInt(100));

    return rand;
}

public static void main(String[]Args){
   System.out.println(RandNum());
}

}

Функция этой программы полностью находится в строке 6 (начинающейся с «int rand ...». Обратите внимание, что Math.abs () просто преобразует число в абсолютное значение, и оно объявлено как int, что не очень важно Первое (100) - это число, которое я добавляю к случайному. Это означает, что новое выходное число будет случайным числом + 100. numGen.nextInt () - это значение самого случайного числа, и потому что я положил (100) в скобках это любое число от 1 до 100. Поэтому, когда я добавляю 100, оно становится числом от 101 до 200. На самом деле вы не генерируете число от 100 до 200, а добавляете к одному. от 1 до 100.

ответил David Behrens 11 +04002012-10-11T16:44:05+04:00312012bEurope/MoscowThu, 11 Oct 2012 16:44:05 +0400 2012, 16:44:05
0

Также можно попробовать ниже:

public class RandomInt { 
    public static void main(String[] args) { 

        int n1 = Integer.parseInt(args[0]);
        int n2 = Integer.parseInt(args[1]);
        double Random;

        if (n1 != n2)
        {
            if (n1 > n2)
            {
                Random = n2 + (Math.random() * (n1 - n2));
                System.out.println("Your random number is: " + Random);
            }
            else
            {
                Random = n1 + (Math.random() * (n2 - n1));   
                System.out.println("Your random number is: " +Random);
            }
        } else {
            System.out.println("Please provide valid Range " +n1+ " " +n2+ " are equal numbers." );
        }                     
    }
}
ответил Sunil 30 +04002012-10-30T22:23:13+04:00312012bEurope/MoscowTue, 30 Oct 2012 22:23:13 +0400 2012, 22:23:13

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132