How to use java math.random

Генерация случайных чисел в Java

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

  • java.util.Случайный класс
  • Метод Math.random : может генерировать случайные числа двойного типа.
  • Класс ThreadLocalRandom

1) java.util.Random

  • Чтобы использовать этот класс для генерации случайных чисел, мы должны сначала создать экземпляр этого класса, а затем вызвать методы, такие как nextInt (), nextDouble (), nextLong () и т. Д., Используя этот экземпляр.
  • С помощью этого класса мы можем генерировать случайные числа типов целые числа, числа с плавающей запятой, двойные, длинные, логические.
  • Мы можем передать аргументы в методы для определения верхней границы диапазона генерируемых чисел. Например, nextInt (6) будет генерировать числа в диапазоне от 0 до 5 включительно.

// Java-программа для демонстрации генерации случайных чисел // используя java.util.Random;

public class generateRandom<

public static void main(String args[])

// создаем экземпляр класса Random

Random rand = new Random();

// Генерируем случайные целые числа в диапазоне от 0 до 999

int rand_int1 = rand.nextInt( 1000 );

int rand_int2 = rand.nextInt( 1000 );

// Вывести случайные целые числа

System.out.println( «Random Integers: » +rand_int1);

System.out.println( «Random Integers: » +rand_int2);

// Генерируем случайные числа

double rand_dub1 = rand.nextDouble();

double rand_dub2 = rand.nextDouble();

// Выводим случайные числа

System.out.println( «Random Doubles: » +rand_dub1);

System.out.println( «Random Doubles: » +rand_dub2);

2) Math.random () Класс Math содержит различные методы для выполнения различных числовых операций, таких как вычисление возведения в степень, логарифмы и т. Д. Одним из этих методов является random (), этот метод возвращает двойное значение со знаком плюс, большим или равным 0,0 и меньшим 1,0 , Возвращаемые значения выбираются псевдослучайно. Этот метод может генерировать только случайные числа типа Doubles. Ниже программа объясняет, как использовать этот метод:

// Java-программа для демонстрации работы // Math.random () для генерации случайных чисел

public class generateRandom

public static void main(String args[])

// Генерация случайных двойников

System.out.println( «Random doubles: » + Math.random());

System.out.println( «Random doubles: » + Math.random());

3) класс java.util.concurrent.ThreadLocalRandom Этот класс введен в Java 1.7 для генерации случайных чисел типа integer, double, boolean и т. Д. Ниже программа объясняет, как использовать этот класс для генерации случайных чисел:

// Java-программа для демонстрации работы ThreadLocalRandom // генерировать случайные числа.

public class generateRandom

public static void main(String args[])

// Генерируем случайные целые числа в диапазоне от 0 до 999

int rand_int1 = ThreadLocalRandom.current().nextInt();

int rand_int2 = ThreadLocalRandom.current().nextInt();

// Вывести случайные целые числа

System.out.println( «Random Integers: » + rand_int1);

System.out.println( «Random Integers: » + rand_int2);

// Генерируем случайные числа

double rand_dub1 = ThreadLocalRandom.current().nextDouble();

double rand_dub2 = ThreadLocalRandom.current().nextDouble();

// Выводим случайные числа

System.out.println( «Random Doubles: » + rand_dub1);

System.out.println( «Random Doubles: » + rand_dub2);

// Генерируем случайные логические значения

boolean rand_bool1 = ThreadLocalRandom.current().nextBoolean();

boolean rand_bool2 = ThreadLocalRandom.current().nextBoolean();

// Печать случайных логических значений

System.out.println( «Random Booleans: » + rand_bool1);

System.out.println( «Random Booleans: » + rand_bool2);

Эта статья предоставлена Суровым Агарвалом . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи [email protected]. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Java Math.random Between Two Numbers

The method does not accept any arguments, which means that there is no way to influence the number generated by the method. However, we can create our own method which allows us to generate numbers between a particular range.

For instance, suppose we are building an app that generates the random numbers which will be used to distinguish a customer’s order at a cruise line. These numbers will be added onto the end of a customer’s name.

The number we want to generate should be between 200 and 500. In order to generate this number and prepare the customer’s order reference, we could use this code:

class Main {
	public static int generateTicketNumber(int min, int max) {
		int range = (max - min) + 1;
		return (int)(Math.random() * range) + min;
	}

	public static void main(String args[]) {
		String customerName = "JohnMcIver";
		int randomNumber = generateTicketNumber(200, 500);
		System.out.println(customerName + randomNumber);
	}
}

Our code returns:

In our program, we generate a random number between the range of 200 and 500. Then we append that number to the customer’s name and print out the result to the console.

Let’s break down how our code works:

  1. We declare a method called which accepts two parameters: min and max.
  2. uses the min and max parameters to generate a random number within the range of those two numbers with
  3. When the main program runs, a variable called is declared and is assigned the value .
  4. Then the method is called and the parameters 200 and 500 are specified, which correspond to the min and max values in the range our result should fall in, respectively. The result of this method is assigned to the variable .
  5. The customer’s name and the random number generated are concatenated—or merged together—and printed to the console.

Пример

Тем не менее, в разработке, мы встречаем ситуаций, где нам нужно использовать объекты вместо примитивных типов данных. Для того чтобы достичь этого Java предоставляет классы-оболочки.

Все классы-оболочки (Integer, Long, Byte, Double, Float, Short) являются подклассами абстрактного класса чисел в Java (class Number).

Объект класса-оболочки содержит или обертывает свой соответствующих примитивный тип данных. Конвертирование примитивных типов данных в объект называется упаковка, и об этом заботится компилятором. Поэтому при использовании класса-оболочки необходимо просто передать конструктору класса-оболочки значение примитивного типа данных.

Объект оболочки может быть преобразован обратно в примитивный тип данных, и этот процесс называется распаковка. Класс чисел является частью пакета java.lang.

Вот пример упаковки и распаковки:

Будет получен следующий результат:

Когда х присваивается целое значение, компилятор упаковывает целое число, потому что х это целочисленный объект. Позже распаковывает х так, чтобы он мог быть добавлен в виде целого числа.

Random Number Generation Using the Random Class

You can use the java.util.Random class to generate random numbers of different types, such as int, float, double, long, and boolean.

To generate random numbers, first, create an instance of the Random class and then call one of the random value generator methods, such as nextInt(), nextDouble(), or nextLong().

The nextInt() method of Random accepts a bound integer and returns a random integer from 0 (inclusive) to the specified bound (exclusive).

The code to use the nextInt() method is this.

The code to use the nextInt() method to generate an integer within a range is:

The nextFloat() and nextDouble() methods allow generating float and double values between 0.0 and 1.0.

The code to use both the methods is:

Получение произвольных десятичных цифр

Дробные числа от нуля до единицы генерируются в C# при помощи метода . Когда необходимо получать величины с дробной частью, можно складывать сгенерированную псевдослучайную дробную часть со сгенерированной целой частью числа:

namespace drobniy
{
    class Program
    {
        static void Main(string[] args)
        {
            Random sluchainoe_chislo = new Random();
            double floating_point = sluchainoe_chislo.NextDouble()+sluchainoe_chislo.Next();
            Console.WriteLine(floating_point);

        }
    }
}

Существуют и другие способы получения дробных чисел, например, простым умножением дробного числа на 10, 100, 1000 и так далее.

Core team and contributors

Awesome contributors

  • Adriano Machado
  • Alberto Lagna
  • Andrew Neal
  • Arne Zelasko
  • dadiyang
  • Dovid Kopel
  • Eric Taix
  • euZebe
  • Fred Eckertson
  • huningd
  • Johan Kindgren
  • Joren Inghelbrecht
  • Jose Manuel Prieto
  • kermit-the-frog
  • Lucas Andersson
  • Michael Düsterhus
  • Nikola Milivojevic
  • nrenzoni
  • Oleksandr Shcherbyna
  • Petromir Dzhunev
  • Rebecca McQuary
  • Rodrigue Alcazar
  • Ryan Dunckel
  • Sam Van Overmeire
  • Valters Vingolds
  • Vincent Potucek
  • Weronika Redlarska
  • Konstantin Lutovich
  • Steven_Van_Ophem
  • Jean-Michel Leclercq
  • Marian Jureczko
  • Unconditional One
  • JJ1216
  • Sergey Chernov

Thank you all for your contributions!

Функции rand() и srand()

В языках программирования обычно предусмотрены функции, позволяющие генерировать случайные числа в определенном по умолчанию диапазоне. На самом деле генерируются не случайные, а так называемые псевдослучайные числа; они выглядят случайно, но вычисляются по вполне конкретной формуле. Но для простоты далее мы все равно будем называть их случайными.

В языке программирования C получить случайное число можно с помощью функции , которая входит в стандартную библиотеку языка. Эта функция не принимает никакие параметры.

Напишите программу, в которой целочисленной переменной присваивается результат выполнения функции . Выведите значение переменной на экран.

Функция возвращает целое число от 0 до значения присвоенного константе RAND_MAX. Значение RAND_MAX зависит от системы и определено в заголовочном файле stdlib.h. Так, например, оно может быть равно 32767 (двухбайтовое целое) или 2147483647 (четырехбайтовое целое).

Определите значение RAND_MAX в вашей системе. Для этого не забудьте подключить к файлу исходного кода заголовочный файл stdlib.h.

Код ниже выводит на экран 50 случайных чисел:

#include <stdio.h>
#include <stdlib.h>
 
int main () {
    char i;
 
    for (i = 1; i <= 50; i++) {
        printf("%15d", rand());
        if (i % 5 == ) printf("\n");
    }        
}

В теле цикла осуществляется переход на новую строку после каждых выведенных на экран пяти чисел. Для этого используется выражение, в котором находится остаток от деления i на 5, результат сравнивается с 0. Чтобы после первого числа не происходил переход на новую строку, iсначала присваивается единица, а не ноль (т.к. 0 делится на 5 без остатка).

Спишите код, приведенный выше

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

Вы должны были заметить, что при каждом запуске программы числа остаются одинаковыми. Даже если вы перекомпилируете программу, результат не изменится. Данный эффект связан с тем, что начальное (инициализирующее) число, которое подставляется в формулу вычисления первого и последующих псевдослучайных чисел, для каждой системы всегда одно и то же. Однако это начальное число можно изменить с помощью функции , которой в качестве параметра передается любое целое число. Понятно, что если вы зададите конкретный аргумент для функции, например, , то от вызова к вызову программы числа будут также одни и те же. Хотя и не те, что были бы без . Поэтому появляется проблема, как сделать так, чтобы аргумент для был тоже случайным? Получается замкнутый круг.

Переделайте программу, выводящую на экран 50 случайных чисел так, чтобы сначала у пользователя запрашивалось любое целое число с помощью , которое передавалось бы в функцию .

Пользователь программы сам может задавать инициализирующее значение. Но чаще всего это не является полноценным выходом из ситуации. Поэтому инициализирующее значение привязывают к какому-либо процессу, протекающему в операционной системе, например, к часам. Время (учитывая не только время суток, но и дату) никогда не бывает одинаковым. Значит значение для , преобразованное в целое из системного времени, будет различным.

Текущее время можно узнать с помощью функции , прототип которой описан в файле time.h. Передав в качестве параметра NULL, мы получим целое число, которое можно передать в :

srand(time(NULL));

Переделайте вашу программу так, чтобы инициализирующее значение зависело от системного времени.

Линейный конгруэнтный алгоритм

Оказывается, и алгоритм Лемера, и алгоритм Вичмана-Хилла можно считать особыми случаями так называемого линейного конгруэнтного алгоритма (linear congruential, LC). Выраженный в виде уравнения, LC выглядит так:

Это точно соответствует алгоритму Лемера с добавлением дополнительной константы c. Включение c придает универсальному LC-алгоритму несколько лучшие статистические свойства по сравнению с алгоритмом Лемера. Демонстрационная реализация LC-алгоритма показана на рис. 4. Код основан на стандарте POSIX (Portable Operating System Interface).

Рис. 4. Реализация линейного конгруэнтного алгоритма

LC-алгоритм использует несколько битовых операций. Здесь идея в том, чтобы в базовых математических типах работать не с целым типом (32 бита), а с длинным целым (64 бита). По окончании 32 из этих битов (с 16-го по 47-й включительно) извлекаются и преобразуются в целое число. Этот подход дает более качественные результаты, чем при использовании просто 32 младших или старших битов, но за счет некоторого усложнения кодирования.

В демонстрации генератор случайных чисел LC вызывается так:

Заметьте, что в отличие от генераторов Лемера и Вичмана-Хилла генератор LC может принимать начальное значение 0. Конструктор в демонстрации LC копирует значение входного параметра seed непосредственно в член класса — поле seed. Многие распространенные реализации LC выполняют предварительные манипуляции над входным начальным значением, чтобы избежать генерации хорошо известных серий начальных значений.

Зачем нужны функции getstate() и setstate() ?

Если вы получили предыдущее состояние и восстановили его, тогда вы сможете оперировать одними и теми же случайными данными раз за разом. Помните, что использовать другую функцию random в данном случае нельзя. Также нельзя изменить значения заданных параметров. Сделав это, вы измените значение состояния .

Для закрепления понимания принципов работы и в генераторе случайных данных Python рассмотрим следующий пример:

Python

import random

number_list =

print(«Первая выборка «, random.sample(number_list,k=5))

# хранит текущее состояние в объекте state
state = random.getstate()

print(«Вторая выборка «, random.sample(number_list,k=5))

# Восстанавливает состояние state, используя setstate
random.setstate(state)

#Теперь будет выведен тот же список второй выборки
print(«Третья выборка «, random.sample(number_list,k=5))

# Восстанавливает текущее состояние state
random.setstate(state)

# Вновь будет выведен тот же список второй выборки
print(«Четвертая выборка «, random.sample(number_list,k=5))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

importrandom

number_list=3,6,9,12,15,18,21,24,27,30

print(«Первая выборка «,random.sample(number_list,k=5))

 
# хранит текущее состояние в объекте state

state=random.getstate()

print(«Вторая выборка «,random.sample(number_list,k=5))

 
# Восстанавливает состояние state, используя setstate

random.setstate(state)

 
#Теперь будет выведен тот же список второй выборки

print(«Третья выборка «,random.sample(number_list,k=5))

 
# Восстанавливает текущее состояние state

random.setstate(state)

 
# Вновь будет выведен тот же список второй выборки

print(«Четвертая выборка «,random.sample(number_list,k=5))

Вывод:

Shell

Первая выборка
Вторая выборка
Третья выборка
Четвертая выборка

1
2
3
4

Перваявыборка18,15,30,9,6

Втораявыборка27,15,12,9,6

Третьявыборка27,15,12,9,6

Четвертаявыборка27,15,12,9,6

Как можно заметить в результате вывода — мы получили одинаковые наборы данных. Это произошло из-за сброса генератора случайных данных.

Примеры

Чтобы воспользоваться возможностями генерации случайных чисел в Python 3, следует произвести импорт библиотеки random, вынеся ее в начало исполняемого файла при помощи ключевого слова import.

Вещественные числа

В модуле есть одноименная функция random. В Python она используется чаще, чем другие функции этого модуля. Функция возвращает вещественное число в промежутке от 0 до 1. В следующем примере демонстрируется создание трех разных переменных a, b и c.

import random
a = random.random()
b = random.random()
print(a)
print(b)

0.547933286519
0.456436031781

Целые числа

Для получения случайных целых чисел в определенном диапазоне используется функция randint, принимающая два аргумента: минимальное и максимальное значение. Программа, показанная ниже отображает генерацию трех разных значений в промежутке от 0 до 9.

import random
a = random.randint(0, 9)
b = random.randint(0, 9)
print(a)
print(b)

4
7

Диапазоны целых

Метод randrange позволяет генерировать целочисленные значения, благодаря работе с тремя параметрами: минимальная и максимальная величина, а также длина шага. Вызвав функцию с одним аргументом, начальная граница получит значение 0, а интервал станет равен 1. Для двух аргументов автоматически инициализируется только длина шага. Работа данного метода с трема разными наборами параметров показана в следующем примере.

import random
a = random.randrange(10)
b = random.randrange(2, 10)
c = random.randrange(2, 10, 2)
print(a)
print(b)
print(c)

9
5
2

Диапазоны вещественных

Сгенерировать вещественное число поможет метод под названием uniform. Он принимает всего два аргумента, обозначающих минимальное и максимальное значения. Демонстрация его работы располагается в следующем примере кода, где создаются переменные a, b и c.

import random
a = random.uniform(0, 10)
b = random.uniform(0, 10)
print(a)
print(b)

4.85687375091
3.66695202551

Использование в генераторах

Возможности генерации псевдослучайных чисел можно использовать и для создания последовательностей. В следующем фрагменте кода создается набор чисел при помощи генератора списка со случайным наполнением и длиной. Как можно заметить, в данном примере функция randint вызывается дважды: для каждого элемента и размера списка.

import random
a = 
print(a)

Перемешивание

Метод shuffle дает возможность перемешать содержимое уже созданного списка. Таким образом, все его элементы будут находиться в абсолютно случайном порядке. Пример, где отображается работа этой функции со списком a из 10 значений, располагается дальше.

import random
a = 
random.shuffle(a)
print(a)

Случайный элемент списка

При помощи функции choice можно извлечь случайный элемент из существующего набора данных. В следующем примере переменная b получает некое целое число из списка a.

import random
a = 
b = random.choice(a)
print(b)

7

Несколько элементов списка

Извлечь из последовательности данных можно не только один элемент, но и целый набор значений. Функция sample позволит получить абсолютно новый список чисел из случайных компонентов уже существующего списка. В качестве первого аргумента необходимо ввести исходную последовательность, а на месте второго указать желаемую длину нового массива.

import random
a = 
a = random.sample(a, 5)
print(a)

Генерация букв

Возможности стандартной библиотеки позволяют генерировать не только числа, но и буквы. В следующем примере показывается инициализация трех разных переменных случайными символами латиницы. Для этого необходимо произвести импортирование модуля string, а затем воспользоваться списком letters, который включает все буквы английского алфавита.

import random
import string
a = random.choice(string.letters)
b = random.choice(string.letters)
c = random.choice(string.letters)
print(a)
print(b)
print(c)

J
i
L

Как можно заметить, отображаются буквы в разном регистре. Для того чтобы преобразовать их к общему виду, рекомендуется вызвать стандартные строковые методы upper или lower.

SystemRandom

Как уже говорилось ранее, SystemRandom основана на os.urandom. Она выдает так же псевдослучайные данные, но они зависят дополнительно и от операционной системы. Результаты используются в криптографии. Есть недостаток — то что функции SystemRandom отрабатывают в несколько раз дольше. Рассмотрим пример использования:

import random
sr = random.SystemRandom()
a = sr.random()
b = sr.randint(0, 9)
c = sr.randrange(2, 10, 2)
print(a)
print(b)
print(c)

0.36012464614815465
2
8

Создание случайных чисел в PHP

Существуют три различные функции для генерации случайных чисел в PHP. Все они будут принимать минимальное и максимально возможное значение для случайных чисел и выдавать случайное число для вас. Это , и .

С минимальные и максимальные значения целых чисел, которые вы можете генерировать, лежат между и значением, возвращаемым функцией . До PHP 7.1.0 эта функция была примерно в четыре раза медленнее, чем . Однако, начиная с PHP 7.1.0, она была создана как псевдоним . В отличие от , вы можете установить значение меньше, чем , не вызывая ошибки.

С минимальные и максимальные значения целых чисел, которые вы можете генерировать, лежат между и значением, возвращаемым . Функция использует реализацию Mersenne Twister для генерации случайных чисел. Остерегайтесь, до PHP 7.1.0, эта функция реализовывала неверную версию алгоритма для генерации чисел. Однако он был исправлен в более новых версиях.

Функция стала еще лучше в PHP 7.2.0, избавившись от ошибки модульного смещения. Это означает, что для некоторых конкретных значений ваша последовательность случайных чисел теперь будет немного лучше по сравнению со старыми версиями. Однако какой-то специализированный код может действительно полагаться на эту предвзятость. Если это так, вы можете использовать более старый алгоритм, вызвав функцию для задания начального числа для генератора случайных чисел и передачи в качестве значения второго параметра.

Функция имеет период 219937-1, что в основном означает, что в наилучших сценариях вы получаете целых 219937-1 случайных чисел до того, как последовательность начнет повторяться. Следует отметить, что повторение последовательности не совпадает с повторением определенного числа. Другими словами, вы можете получить одно и то же случайное число дважды, но это не значит, что сама последовательность начала повторяться. Примером может служить следующая последовательность:

В приведенной выше последовательности у нас было 1267 два раза на выходе, но это не означает, что после этого вся последовательность начала повторяться. Маловероятно, чтобы такое же число повторялось так быстро в случайной последовательности, но это возможно!

Криптографически безопасные случайные целые числа

Если вы хотите криптографически безопасные псевдослучайные числа, функция в PHP — ваш лучший выбор. Он будет генерировать случайные числа между предоставленными значениями и , которые по умолчанию соответствуют и . К сожалению, эта функция доступна только с PHP 7.0. Для версий до этого вы можете использовать этот полифилл на GitHub.

Случайные числа с плавающей точкой

Вместо генерации случайных целых чисел вы также можете генерировать числа с плавающей точкой. Это можно сделать легко, просто разделив случайное число на значение, возвращаемое . В следующем примере будет проиллюстрировано, как создать случайное значение с плавающей точкой от 0 до 1 или между любыми другими минимальными и максимальными пределами.

При генерации случайного числа с плавающей точкой между заданными пределами мы убеждаемся, что случайные целые числа не превышают . Таким образом, мы можем быть уверены, что добавление float-части не займет числа выше максимального предела.

Изменение начального числа генераторов случайных чисел

Одна концепция, которая нуждается в небольшом объяснении, — это начальные числа. Проще говоря, это просто цифры, которые можно использовать для инициализации функций и перед генерированием случайных чисел. Функция, которая изменяет начальное число генератора псевдослучайных чисел называется , и функция, которая изменяет начальное число генератора псевдослучайных чисел называется .

Важно помнить, что предоставление начального значения случайного числа за один раз до вызова и не обязательно приведет к получению более качественных случайных чисел. Фактически, использование одного и того же начального случайного числа каждый раз даст вам одно и то же случайное число!. Изменение случайного числа полезно в ситуациях, когда вы хотите создать случайную, но воспроизводимую последовательность

Следующий фрагмент кода генерирует одну и ту же последовательность случайных чисел при повторном запуске

Изменение случайного числа полезно в ситуациях, когда вы хотите создать случайную, но воспроизводимую последовательность. Следующий фрагмент кода генерирует одну и ту же последовательность случайных чисел при повторном запуске.

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

How to generate random numbers in Java?

We can use the  static method of the Math class to generate random numbers in Java.

1 publicstaticdoublerandom()

This method returns a double number that is greater than or equal to 0.0 and less than 1.0 (Please note that the 0.0 is inclusive while 1.0 is exclusive so that 0 <= n < 1)

a) How to generate a random number between 0 and 1?

1
2
3
4
5
6
7
8
9
10
11
12
13

packagecom.javacodeexamples.mathexamples;

publicclassGenerateRandomNumberExample{

publicstaticvoidmain(Stringargs){

System.out.println(«Random numbers between 0 and 1»);

for(inti=;i<10;i++){

System.out.println(Math.random());

}

}

}

Output (could be different for you as these are random numbers)

1
2
3
4
5
6
7
8
9
10
11
Random numbers between 0 and 1
0.12921328590853476
0.7936354242494305
0.08878870565069197
0.12470497778455492
0.1738593303254422
0.6793228890529989
0.5948655601179271
0.9910316469070309
0.1867838198026388
0.6630122474512686

b) Between 0 and 100

It is a fairly easy task to generate random numbers between 0 and 100. Since the  method returns a number between 0.0 and 1.0, multiplying it with 100 and casting the result to an integer will give us a random number between 0 and 100 (where 0 is inclusive while 100 is exclusive).

1
2

intrandomNumber=(int)(Math.random()*100);

System.out.println(«Random Number: «+randomNumber);

c) Between a specific range

Since the  method returns a double value between 0.0 and 1.0, we need to derive a formula so that we can generate numbers in the specific range.

Let’s do that step by step. Suppose you want to generate random numbers between 10 and 20. So the minimum number it should generate is 10 and the maximum number should be 20.

Step 1:

First of all, we need to multiply the  method result with the maximum number so that it returns value between 0 to max value (in this case 20) like given below.

1 intrandomNumber=(int)(Math.random()*20);

The above statement will return us a random number between 0.0 and 19. That is because multiplying 0.0 – 0.99 with 20 and casting the result back to int will give us the range of 0 to 19.

Step 2:

Step 1 gives us a random number between 0 and 19. But we want a random number starting from 10, not 0. Let’s add that number to the result.

1 intrandomNumber=10+(int)(Math.random()*20);

Step 3:

Now the number starts from 10 but it goes up to 30. That is because adding 10 to 0-19 will give us 10-29. So let’s subtract 10 from 20 before the multiplication operation.

1 intrandomNumber=10+(int)(Math.random()*(20-10));

Step 4:

The random number generated by the above formula gives us a range between 10 and 19 (both inclusive). The number range we wanted was between 10 and 20 (both inclusive). So let’s add 1 to the equation.

1 intrandomNumber=10+(int)(Math.random()*((20-10)+1));

A final result is a random number in the range of 10 to 20.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Люкс-хост
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: