Как сделать рандом от 1 до 10

Обновлено: 07.07.2024

При разработке приложений часто нужно генерировать случайные числа. Java предоставляет для этого классы java.lang.Math и java.util.Random . В этой статье я расскажу о нескольких способах генерации случайных чисел и приведу конкретные примеры реализации.

Генерация случайных чисел с помощью класса Math

Чтобы сгенерировать случайное число Java предоставляет класс Math, доступный в пакете java.util. Этот класс содержит статичный метод Math.random(), предназначенный для генерации случайных чисел типа double .

Метод random( ) возвращает положительное число большее или равное 0,0 и меньшее 1,0. При вызове данного метода создается объект генератора псевдослучайных чисел java.util.Random.

Math.random() можно использовать с параметрами и без. В параметрах задается диапазон чисел, в пределах которого будут генерироваться случайные значения.

Пример использования Math.random():

Метод getRandomNumber( ) использует Math.random() для возврата положительного числа, которое больше или равно 0,0 или меньше 1,0 .

Результат выполнения кода:

Случайные числа в заданном диапазоне

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

Разобьем это выражение на части:

  1. Сначала умножаем диапазон значений на результат, который генерирует метод random().Math.random() * (max — min)возвращает значение в диапазоне [0 , max- min], где max не входит в заданные рамки. Например, выражение Math.random()*5 вернет значение в диапазоне [0 , 5], в который 5 не входит.
  2. Расширяем охват до нужного диапазона. Это делается с помощью минимального значения.

Но выражение по-прежнему не охватывает максимальное значение.

  • Чтобы получить максимальное значение, прибавьте 1 к параметру диапазона (max — min). Это вернет случайное число в указанном диапазоне.

Существуют различные способы реализации приведенного выше выражения. Рассмотрим некоторые из них.

Случайное двойное число в заданном диапазоне

По умолчанию метод Math.random() при каждом вызове возвращает случайное число типа double . Например:

Вы можете вызвать предыдущий метод из метода main, передав аргументы, подобные этому.

Случайное целое число в заданном диапазоне

Пример генерации случайного целочисленного значения в указанном диапазоне:

Метод getRandomIntegerBetweenRange() создает случайное целое число в указанном диапазоне. Так как Math.random() генерирует случайные числа с плавающей запятой, то нужно привести полученное значение к типу int. Этот метод можно вызвать из метода main, передав ему аргументы следующим образом:

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

Генерация случайных чисел с помощью класса Random

Класс java.util.Random можно применять для генерации случайных чисел различных типов: int, float, double, long и boolean .

Для этого сначала создайте экземпляр класса Random, а затем вызовите один из методов генератора случайных значений: nextInt( ), nextDouble( ) или nextLong( ).

Метод nextInt( ) класса Random принимает граничное целое число и возвращает случайное значение int от 0 (включительно) до указанного предела (не включая).

Пример использования метода nextInt( ):

Пример использования метода nextInt ( ) для генерации целого числа в заданном диапазоне:

Методы nextFloat ( ) и nextDouble( ) позволяют генерировать числа с плавающей запятой, а также значения типа double в диапазоне от 0,0 до 1,0.

Код для использования обоих методов:

Генерируем случайное число в Java 8 — особенности

В Java 8 был представлен новый метод класса java.util.Random — ints(). Он возвращает неограниченный поток псевдослучайных значений int. Данный метод позволяет указать диапазон чисел, задав минимальное и максимальное значения.

Пример использования метода Random.ints() для генерации случайных целочисленных значений в указанном диапазоне:

Метод getRandomNumberInts( ) генерирует поток случайных целых чисел от min(включительно) и до max (не входит в диапазон).

Метод ints( ) создает IntStream, поэтому будет вызвана функция findFirst( ). Она возвращает объект OptionalInt , который описывает первый элемент этого потока. Затем код вызывает метод getAsInt( ), чтобы вернуть значение int в OptionalInt.

Пример использования метода Random.ints() для генерации потока случайных целочисленных значений:

Код для вызова предыдущего метода:

Пример использования метода Random.ints() для генерации потока из диапазона случайных целочисленных значений:

Код для вызова приведенного выше метода:

Кроме ints( ) существует еще несколько методов, которые были добавлены к классу Random в Java 8. Они могут возвращать последовательный поток случайных чисел. Это:

  • LongStream longs( );
  • DoubleStream doubles( ).

Заключение

Класс java.util.Random реализует линейный конгруэнтный генератор (LCG). Он отличается быстротой работы. Но при этом он не подходит для использования в режиме реального времени. Например, для генерации уникального идентификатора сессии на сервере, в научных экспериментах, криптографии лотереях и розыгрышах.

Пожалуйста, оставьте свои комментарии по текущей теме материала. Мы крайне благодарны вам за ваши комментарии, отклики, дизлайки, лайки, подписки!

Пожалуйста, оставляйте ваши отзывы по текущей теме материала. За комментарии, отклики, лайки, дизлайки, подписки огромное вам спасибо!

Python порождает случайные числа на основе формулы, так что они не на самом деле случайные, а, как говорят, псевдослучайные [1]. Этот способ удобен для большинства приложений (кроме онлайновых казино) [2].

[1]Википедия: Генератор псевдослучайных чисел
[2]Доусон М. Программируем на Python. — СПб.: Питер, 2014. — 416 с.: ил. — 3-е изд

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

random.random¶

random.random() — возвращает псевдослучайное число от 0.0 до 1.0

random.seed¶

random.seed( ) — настраивает генератор случайных чисел на новую последовательность. По умолчанию используется системное время. Если значение параметра будет одиноким, то генерируется одинокое число:

random.uniform¶

random.uniform( , ) — возвращает псевдослучайное вещественное число в диапазоне от до :

random.randint¶

random.randint( , ) — возвращает псевдослучайное целое число в диапазоне от до :

random.randrange¶

random.randrange( , , ) — возвращает случайно выбранное число из последовательности.

random.shuffle¶

random.shuffle( ) — перемешивает последовательность (изменяется сама последовательность). Поэтому функция не работает для неизменяемых объектов.

Вероятностные распределения¶

random.triangular(low, high, mode) — случайное число с плавающей точкой, low ≤ N ≤ high . Mode - распределение.

random.betavariate(alpha, beta) — бета-распределение. alpha>0 , beta>0 . Возвращает от 0 до 1.

random.expovariate(lambd) — экспоненциальное распределение. lambd равен 1/среднее желаемое. Lambd должен быть отличным от нуля. Возвращаемые значения от 0 до плюс бесконечности, если lambd положительно, и от минус бесконечности до 0, если lambd отрицательный.

random.gammavariate(alpha, beta) — гамма-распределение. Условия на параметры alpha>0 и beta>0 .

random.gauss(значение, стандартное отклонение) — распределение Гаусса.

random.lognormvariate(mu, sigma) — логарифм нормального распределения. Если взять натуральный логарифм этого распределения, то вы получите нормальное распределение со средним mu и стандартным отклонением sigma . mu может иметь любое значение, и sigma должна быть больше нуля.

random.normalvariate(mu, sigma) — нормальное распределение. mu — среднее значение, sigma — стандартное отклонение.

random.vonmisesvariate(mu, kappa) — mu — средний угол, выраженный в радианах от 0 до 2π, и kappa — параметр концентрации, который должен быть больше или равен нулю. Если каппа равна нулю, это распределение сводится к случайному углу в диапазоне от 0 до 2π.

random.paretovariate(alpha) — распределение Парето.

random.weibullvariate(alpha, beta) — распределение Вейбулла.

Примеры¶

Генерация произвольного пароля¶

Хороший пароль должен быть произвольным и состоять минимум из 6 символов, в нём должны быть цифры, строчные и прописные буквы. Приготовить такой пароль можно по следующему рецепту:

Этот же скрипт можно записать всего в две строки:

Данная команда является краткой записью цикла for, вместо неё можно было написать так:

Данный цикл повторяется 12 раз и на каждом круге добавляет к строке psw произвольно выбранный элемент из списка.

В данной статье мы рассмотрим особенности алгоритма генератора случайных чисел в Excel, и на примерах рассмотрим, как использовать функции СЛЧИС и СЛУЧМЕЖДУ в Excel для генерации случайных чисел, случайных чисел с заданным количеством знаков после запятой, дат и времени.

Генератор случайных чисел с использованием функции СЛЧИС

Функция СЛЧИС является одной из двух функций, специально предназначенных для генерации случайных чисел в Excel. Данная функция возвращает случайное десятичное число (действительное число) между 0 и 1.

СЛЧИС() является энергозависимой функцией, что означает, что при каждом вычислении рабочего листа создается новое случайное число. И это происходит каждый раз, когда вы выполняете какое-либо действие на листе, например, обновляете формулу (не обязательно формулу СЛЧИС, любую другую формулу на листе), редактируете ячейку или вводите новые данные.

Функция СЛЧИС доступна во всех версиях: Excel 2016, Excel 2013, Excel 2010, Excel 2007, Excel 2003.

Поскольку функция Excel СЛЧИС не имеет аргументов, вы просто вводите =СЛЧИС() в ячейке и затем копируете формулу на столько ячеек, сколько хотите:

1-generator-sluchainykh-chisel-v-excel

Генератор случайных чисел в Excel – Генерация случайных чисел

А теперь давайте сделаем еще один шаг и напишем несколько формул СЛЧИС для генерации случайных чисел в соответствии с определенными условиями.

Генератор случайных чисел от нуля до заданной верхней границы диапазона

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

Например, для создания последовательности случайных чисел, больших или равных 0, но менее 50, используйте следующую формулу:

Примечание . Значение верхней границы никогда не включается в возвращаемую случайную последовательность. Например, если вы хотите получить случайные числа от 0 до 10, включая 10, правильная формула =СЛЧИС()*11.

Генератор случайных чисел в диапазоне

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

Где A – это нижнее значение границы (наименьшее число), а B – верхнее значение границы (наибольшее число).

Например, чтобы сделать генератор случайных чисел от 10 до 50, вы можете использовать следующую формулу:

Примечание . Эта формула генерации случайных чисел никогда не вернет число, равное наибольшему числу указанного диапазона (значение B).

Генератор случайных целых чисел в Excel

Чтобы функция Excel СЛЧИС создавала случайные целые числа, возьмите одну из вышеупомянутых формул и заверните ее в функцию ЦЕЛОЕ .

Чтобы сделать генератор случайных целых чисел от 0 до 50:

Чтобы генерировать случайные целые числа от 10 до 50:

2-generator-sluchainykh-chisel-v-excel

Генератор случайных чисел в Excel – Генерация случайных целых чисел

Генератор случайных чисел в Excel в диапазоне с помощью функции СЛУЧМЕЖДУ

СЛУЧМЕЖДУ – это еще одна функция в Excel для создания генератора случайных чисел.. Она возвращает случайные целые числа в указанном диапазоне:

СЛУЧМЕЖДУ (нижняя граница; верхняя граница)

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

Подобно СЛЧИС, СЛУЧМЕЖДУ в Excel является изменчивой функцией, и она также возвращает новое случайное целое число каждый раз, когда ваша таблица пересчитывается или изменяется.

Например, того чтобы сделать генератор случайных целых чисел от 10 до 50 (включая 10 и 50) используйте следующую формулу СЛУЧМЕЖДУ:

3-generator-sluchainykh-chisel-v-excel

Генератор случайных чисел в Excel – Генерация случайных чисел в заданном диапазоне

Функция СЛУЧМЕЖДУ в Excel может создавать как положительные, так и отрицательные числа случайные числа. Например, чтобы получить список случайных чисел от -10 до 10, введите следующую формулу на листе:

Функция СЛУЧМЕЖДУ доступна в следующих версиях: Excel 2016, Excel 2013, Excel 2010 и Excel 2007.

В более ранней версии Excel 2003, вы можете использовать формулу СЛЧИС , рассмотренную выше.

Далее в этой статье вы найдете еще несколько примеров формул, демонстрирующих, как использовать функцию СЛУЧМЕЖДУ для создания генератора случайных чисел, отличных от целых.

Создание случайных чисел с заданным количеством знаков после запятой

Хотя функция СЛУЧМЕЖДУ в Excel была предназначена для генерации случайных целых чисел, вы можете использовать ее для генерации случайных десятичных чисел с таким количеством десятичных знаков, сколько хотите.

Например, чтобы получить список чисел с одним десятичным знаком, вы умножаете нижнее и верхнее значения на 10, а затем делите возвращаемое значение на 10:

= СЛУЧМЕЖДУ(нижняя граница*10; верхняя граница*10)/10

Например, чтобы получить список чисел с одним десятичным знаком, вы умножаете нижнее и верхнее значения на 10, а затем делите возвращаемое значение на 10:

Следующая формула СЛУЧМЕЖДУ возвращает случайные десятичные числа от 1 до 50:

4-generator-sluchainykh-chisel-v-excel

Генератор случайных чисел в Excel – Генерация случайных чисел с одним знаком после запятой

Аналогичным образом, чтобы сделать генератор случайных чисел от 1 до 50 с двумя знаками после запятой, вы умножаете аргументы функции СЛУЧМЕЖДУ на 100, а затем делите результат на 100:

5-generator-sluchainykh-chisel-v-excel

Генератор случайных чисел в Excel – Генерация случайных чисел с двумя знаками после запятой

Генератор случайных дат в Excel

Чтобы вернуть список случайных дат между данными двумя датами, используйте функцию СЛУЧМЕЖДУ в сочетании с ДАТА:

=СЛУЧМЕЖДУ (ДАТА (дата начала); ДАТА (дата окончания))

Например, чтобы получить список дат между 1 сентября 2017 и 20 ноября 2017 включительно, введите следующую формулу на листе:

Не забудьте применить формат даты к ячейке (ячейкам), и вы получите список случайных дат, подобных этому:

6-generator-sluchainykh-chisel-v-excel

Генератор случайных чисел в Excel – Генерация случайных дат

Генератор случайного времени в Excel

Во внутренней системе Excel времена хранятся как десятичные числа, и вы можете использовать стандартную функцию Excel СЛЧИС для вставки случайных действительных чисел, а затем просто применить формат времени к ячейкам:

7-generator-sluchainykh-chisel-v-excel

Генератор случайных чисел в Excel – Генерация случайного времени функцией СЛЧИС и применение к ней формата Время

Чтобы сделать генератор случайного времени в указанном диапазоне, требуется более конкретная формула. Рассмотрим подробнее.

Генератор случайного времени в указанном диапазоне

Чтобы вставить произвольное время между любыми двумя указанными вами временными интервалами, используйте функцию ВРЕМЯ в сочетании с Excel СЛЧИС:

= ВРЕМЯ (время начала) + СЛЧИС () * (ВРЕМЯ (время начала) - ВРЕМЯ (время окончания))

Например, чтобы вставить случайное время между 5:30 и 18:00, вы можете использовать одну из следующих формул:

Генератор случайных чисел в Excel – Генерация случайного времени в заданном интервале

Генератор случайных букв в Excel

Чтобы вставить случайную букву, необходимо использовать комбинацию трех различных функций:

Где A - первый символ, а Z - последний символ в диапазоне букв, которые вы хотите включить (в алфавитном порядке).

Разберем функции, в приведенной выше формуле:

  • КОДСИМВ возвращает числовые коды ANSI для указанных букв.
  • СЛУЧМЕЖДУ принимает числа, возвращаемые функциями КОДСИМВ , как нижнее и верхнее значения диапазона.
  • СИМВОЛ преобразует случайные коды ANSI, возвращаемые СЛУЧМЕЖДУ, в соответствующие буквы.

10-generator-sluchainykh-chisel-v-excel

Генератор случайных чисел в Excel – Генерация случайных букв

Так как коды ANSI отличаются для прописных и строчных букв, эта формула учитывает регистр.

Если кто-то наизусть знает Коды символов ANSI, ничто не мешает вам передавать коды непосредственно в функцию СЛУЧМЕЖДУ.

Например, чтобы получить произвольные прописные буквы между A (код ANSI 65) и Z (код ANSI 90), вы пишете:

Чтобы генерировать строчные буквы между а (код ANSI 97) в z (код ANSI 122), вы используете следующую формулу:

11-generator-sluchainykh-chisel-v-excel

Генератор случайных чисел в Excel – Генерация случайных символов

Как предотвратить повторное вычисление СЛЧИС и СЛУЧМЕЖДУ

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

9-generator-sluchainykh-chisel-v-excel

Генератор случайных чисел в Excel – Вставка значений

Генератор случайных чисел с помощью Анализа данных

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

Пример генерации случайных чисел нормального распределения

12-generator-sluchainykh-chisel-v-excel

Генератор случайных чисел в Excel – Анализ данных

13-generator-sluchainykh-chisel-v-excel

Генератор случайных чисел в Excel – Генерация случайных чисел

14-generator-sluchainykh-chisel-v-excel

Генератор случайных чисел в Excel – Генерация случайных чисел нормального распределения

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

модуль random

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

Содержание

Список методов модуля random в Python:

МетодОписание
seed()Инициализация генератора случайных чисел
getstate()Возвращает текущее внутренне состояние (state) генератора случайных чисел
setstate()Восстанавливает внутреннее состояние (state) генератора случайных чисел
getrandbits()Возвращает число, которое представляет собой случайные биты
randrange()Возвращает случайное число в пределах заданного промежутка
randint()Возвращает случайное число в пределах заданного промежутка
choice()Возвращает случайный элемент заданной последовательности
choices()Возвращает список со случайной выборкой из заданной последовательности
shuffle()Берет последовательность и возвращает ее в перемешанном состоянии
sample()Возвращает заданную выборку последовательности
random()Возвращает случайное вещественное число в промежутке от 0 до 1
uniform()Возвращает случайное вещественное число в указанном промежутке
triangular()Возвращает случайное вещественное число в промежутке между двумя заданными параметрами. Также можно использовать параметр mode для уточнения середины между указанными параметрами
betavariate()Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Бета-распределении, которое используется в статистике
expovariate()Возвращает случайное вещественное число в промежутке между 0 и 1, или же между 0 и -1 , когда параметр отрицательный. За основу берется Экспоненциальное распределение, которое используется в статистике
gammavariate()Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Гамма-распределении, которое используется в статистике
gauss()Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Гауссовом распределении, которое используется в теории вероятности
lognormvariate()Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Логнормальном распределении, которое используется в теории вероятности
normalvariate()Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Нормальном распределении, которое используется в теории вероятности
vonmisesvariate()Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на распределении фон Мизеса, которое используется в направленной статистике
paretovariate()Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на распределении Парето, которое используется в теории вероятности
weibullvariate()Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на распределении Вейбулла, которое используется в статистике

Цели данной статьи

Далее представлен список основных операций, которые будут описаны в руководстве:

  • Генерация случайных чисел для различных распределений, которые включают целые и вещественные числа с плавающей запятой;
  • Случайная выборка нескольких элементов последовательности population ;
  • Функции модуля random;
  • Перемешивание элементов последовательности. Seed в генераторе случайных данных;
  • Генерация случайных строки и паролей;
  • Криптографическое обеспечение безопасности генератора случайных данных при помощи использования модуля secrets. Обеспечение безопасности токенов, ключей безопасности и URL;
  • Способ настройки работы генератора случайных данных;
  • Использование numpy.random для генерации случайных массивов;
  • Использование модуля UUID для генерации уникальных ID.

В статье также даются ссылки на некоторые другие тексты сайта, связанные с рассматриваемой темой.

Как использовать модуль random в Python

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

Читайте также: