- Random Number Generator in Python
- Quick Learning
- Python Random Number Between 1 and 10
- Functions for Random Number Generation
- 1. random() Function
- 2. randint() Function
- 3. uniform() Function
- 4. randrange() Function
- 5. choice() Function
- 6. sample() Function
- 7. shuffle() Function
- Custom Function To Generate Random Number
- Conclusion
- Python 3: Генерация случайных чисел (модуль random)¶
- random.random¶
- random.seed¶
- random.uniform¶
- random.randint¶
- random.choince¶
- random.randrange¶
- random.shuffle¶
- Вероятностные распределения¶
- Примеры¶
- Генерация произвольного пароля¶
- Ссылки¶
Random Number Generator in Python
In this article, we will learn how to generate random numbers in Python. You will see random number generator in Python with examples.
There are situations when you need some random numbers to test your program or to check the behavior of a model. In such a scenario, you need a random number to perform the task.
Quick Learning
If you are in hurry or you want to quickly go through random number generation in Python then look at the following code snippet.
There is one thing to note here. Python requires the random module to generate random numbers. So first import the random module.
import random # random number between 0 and 1 num = random.random() print(num) # random integer between 1 and 10 num = random.randint(1, 10) print(num) # random number between 1 and 10 with floating point num = random.uniform(1, 10) print(num) # choose a random element from a list, tuple, string, etc. list = [1, 2, 3, 4, 5] num = random.choice(list) print(num) # shuffle a list, tuple, string, etc. list = [1, 2, 3, 4, 5] random.shuffle(list) print(list)
0.436671069889 8 3.0013320188 1 [2, 3, 5, 4, 1]
Python Random Number Between 1 and 10
The random module has a function randint that generates a random number (integer) between any two numbers.
The function takes two arguments, one is the lower bound and the other is the upper bound.
To generate a random number between 1 and 10, pass 1 and 10 as arguments to the function.
import random # random number between 1 and 10 num = random.randint(1, 10) print(num)
Functions for Random Number Generation
The random module has lots of function that help us with different random number generation tasks.
The following table lists the functions available in the random module for random number generation.
Function | Description |
---|---|
random() | Generates a random number between 0 and 1 . 1 is not included in the range. |
randint(a, b) | Generates a random number between a and b (both inclusive). Generated numbers are integer values. |
uniform(a, b) | Generates a random number between a and b (both inclusive). Generated numbers are floating point values. |
randrange(start, stop, step) | Generates a random number between start and stop (both inclusive). The step argument is optional. If it is not provided, the default value is 1. |
choice(seq) | Chooses a random element from a sequence. The sequence can be a list, tuple, string, etc. |
sample(seq, k) | Chooses k unique random elements from a sequence. The sequence can be a list, tuple, string, etc. |
shuffle(seq) | Shuffles the elements of a sequence and changes it into a random order. |
1. random() Function
The random() Python function generates a floating point random number between 0 and 1 .
0 is included in the range and 1 is not included.
import random # random function # generates a random number between 0 and 1 num = random.random() print(num)
2. randint() Function
The randint() function generates a random integer between given two numbers.
The function takes upper and lower bounds as arguments.
Pass lower bound as the first argument and upper bound as the second argument to the function.
import random # randint function num = random.randint(5, 15) print(f"Random number between 5 and 15 is ") num = random.randint(50, 100) print(f"Random number between 50 and 100 is ")
Random number between 5 and 15 is 12 Random number between 50 and 100 is 79
3. uniform() Function
The uniform() function also generates a random number between given 2 points but it is a floating point number.
The function takes 2 numbers as upper and lower bound of range arguments.
import random # uniform function num = random.uniform(5, 15) print(f"Random number between 5 and 15 is ") num = random.uniform(50, 100) print(f"Random number between 50 and 100 is ")
Random number between 5 and 15 is 12.135485280124156 Random number between 50 and 100 is 87.54564757637775
4. randrange() Function
The randrange() function generates a random number between given 2 points with a given step.
Suppose we want numbers between 1 and 10 with a step size of 2 , then only 1, 3, 5, 7, and 9 will be generated.
import random # randrange function num = random.randrange(1, 10, 2) print(f"Random number between 1 and 10 with step size of 2 is ") num = random.randrange(1, 10, 3) print(f"Random number between 1 and 10 with step size of 3 is ")
Random number between 1 and 10 with step size of 2 is 5 Random number between 1 and 10 with step size of 3 is 4
5. choice() Function
The choice() function randomly chooses an element from a sequence.
The function takes a list, tuple, string, etc. as an argument.
import random # choice function # Choose random element from list list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] num = random.choice(list) print(f"One choice from the list is ") str = "Hello World" chr = random.choice(str) print(f"One choice from the string is ")
One choice from the list is 5 One choice from the string is H
6. sample() Function
The sample() function randomly chooses k unique elements from a sequence.
The function takes a list, tuple, string, etc. as the first argument and a number of elements to choose as the second argument.
import random # sample function list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] num = random.sample(list, 3) print(f"Three choices from the list are ") str = "Hello World" chr = random.sample(str, 5) print(f"Five choices from the string are ")
Three choices from the list are [1, 2, 3] Five choices from the string are ['e', 'l', 'o', ' ', 'W']
7. shuffle() Function
The shuffle() function randomly shuffles the elements of a sequence and changes the order of elements.
import random # shuffle function list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] random.shuffle(list) print(f"Shuffled list is ")
Shuffled list is [10, 5, 1, 2, 4, 3, 9, 7, 8, 6]
Custom Function To Generate Random Number
We mentioned earlier that if you have a random number between 0 and 1 then you can generate a random number between any given range.
Let’s create our own function to generate random numbers in a range.
For this, we will use random.random() function to generate a random number between 0 and 1. And then we will expand this random number to a range.
Let’s see the program first then we will see how the function works.
import random # custom function for random number in range def random_number_in_range(min, max): # number between 0 and 1 r = random.random() # expand the number to a range num = r * (max - min) + min return num # number between 0 and 10 num = random_number_in_range(0, 10) print(num) # number between 10 and 20 num = random_number_in_range(10, 20) print(num)
6.328116209039756 15.00905517135427
Conclusion
The random module is used for any random task, whether it is to generate a random number, select a random element from a list, shuffle a list, etc.
Here we have seen how to generate a random number in Python with multiple useful examples.
Python 3: Генерация случайных чисел (модуль random)¶
Python порождает случайные числа на основе формулы, так что они не на самом деле случайные, а, как говорят, псевдослучайные [1]. Этот способ удобен для большинства приложений (кроме онлайновых казино) [2].
[1] | Википедия: Генератор псевдослучайных чисел |
[2] | Доусон М. Программируем на Python. — СПб.: Питер, 2014. — 416 с.: ил. — 3-е изд |
Модуль random позволяет генерировать случайные числа. Прежде чем использовать модуль, необходимо подключить его с помощью инструкции:
random.random¶
random.random() — возвращает псевдослучайное число от 0.0 до 1.0
random.random() 0.07500815468466127
random.seed¶
random.seed() — настраивает генератор случайных чисел на новую последовательность. По умолчанию используется системное время. Если значение параметра будет одиноким, то генерируется одинокое число:
random.seed(20) random.random() 0.9056396761745207 random.random() 0.6862541570267026 random.seed(20) random.random() 0.9056396761745207 random.random() 0.7665092563626442
random.uniform¶
random.uniform(, ) — возвращает псевдослучайное вещественное число в диапазоне от до :
random.uniform(0, 20) 15.330185127252884 random.uniform(0, 20) 18.092324756265473
random.randint¶
random.randint(, ) — возвращает псевдослучайное целое число в диапазоне от до :
random.randint(1,27) 9 random.randint(1,27) 22
random.choince¶
random.choince() — возвращает случайный элемент из любой последовательности (строки, списка, кортежа):
random.choice('Chewbacca') 'h' random.choice([1,2,'a','b']) 2 random.choice([1,2,'a','b']) 'a'
random.randrange¶
random.randrange(, , ) — возвращает случайно выбранное число из последовательности.
random.shuffle¶
random.shuffle() — перемешивает последовательность (изменяется сама последовательность). Поэтому функция не работает для неизменяемых объектов.
List = [1,2,3,4,5,6,7,8,9] List [1, 2, 3, 4, 5, 6, 7, 8, 9] random.shuffle(List) List [6, 7, 1, 9, 5, 8, 3, 2, 4]
Вероятностные распределения¶
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 символов, в нём должны быть цифры, строчные и прописные буквы. Приготовить такой пароль можно по следующему рецепту:
import random # Щепотка цифр str1 = '123456789' # Щепотка строчных букв str2 = 'qwertyuiopasdfghjklzxcvbnm' # Щепотка прописных букв. Готовится преобразованием str2 в верхний регистр. str3 = str2.upper() print(str3) # Выведет: 'QWERTYUIOPASDFGHJKLZXCVBNM' # Соединяем все строки в одну str4 = str1+str2+str3 print(str4) # Выведет: '123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM' # Преобразуем получившуюся строку в список ls = list(str4) # Тщательно перемешиваем список random.shuffle(ls) # Извлекаем из списка 12 произвольных значений psw = ''.join([random.choice(ls) for x in range(12)]) # Пароль готов print(psw) # Выведет: '1t9G4YPsQ5L7'
Этот же скрипт можно записать всего в две строки:
import random print(''.join([random.choice(list('123456789qwertyuiopasdfghjklzxc vbnmQWERTYUIOPASDFGHJKLZXCVBNM')) for x in range(12)]))
Данная команда является краткой записью цикла for, вместо неё можно было написать так:
import random psw = '' # предварительно создаем переменную psw for x in range(12): psw = psw + random.choice(list('123456789qwertyuiopasdfgh jklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM')) print(psw) # Выведет: Ci7nU6343YGZ
Данный цикл повторяется 12 раз и на каждом круге добавляет к строке psw произвольно выбранный элемент из списка.