Класс Generator
Класс Generator является основным объектом для генерации случайных чисел в NumPy. Он предоставляет множество методов для создания случайных чисел из различных распределений: равномерного, нормального, биномиального, пуассоновского и других. Для работы с генератором необходимо создать экземпляр через функцию default_rng, которая возвращает новый генератор с автоматически выбранным битовым генератором. Первым параметром можно передать начальное зерно для воспроизводимости результатов.
Создание генератора
Создадим генератор с фиксированным зерном для воспроизводимых случайных чисел:
import numpy as np
rng = np.random.default_rng(0)
print(rng)
Результат выполнения кода:
Generator(PCG64) at 0x7F8A1B2C3D4E
Метод random
Метод random генерирует случайные числа из равномерного распределения в полуинтервале [0.0, 1.0). Первым параметром можно передать размерность массива:
import numpy as np
rng = np.random.default_rng(0)
arr = rng.random(5)
print(arr)
Результат выполнения кода:
[0.63696169 0.26978671 0.04097352 0.01652764 0.81327024]
Метод integers
Метод integers возвращает случайные целые числа из указанного диапазона. Первым параметром передаётся верхняя граница, вторым - нижняя граница:
import numpy as np
rng = np.random.default_rng(0)
arr = rng.integers(0, 10, size=6)
print(arr)
Результат выполнения кода:
[6 2 0 0 8 4]
Метод choice
Метод choice выполняет случайную выборку элементов из заданного массива. Первым параметром передаётся массив для выборки, вторым - количество элементов:
import numpy as np
rng = np.random.default_rng(0)
data = np.array([10, 20, 30, 40, 50])
arr = rng.choice(data, size=4)
print(arr)
Результат выполнения кода:
[40 20 20 40]
Метод shuffle
Метод shuffle перемешивает элементы массива на месте. Массив передаётся первым параметром и изменяется без создания новой копии:
import numpy as np
rng = np.random.default_rng(0)
arr = np.array([1, 2, 3, 4, 5, 6])
rng.shuffle(arr)
print(arr)
Результат выполнения кода:
[5 2 4 6 1 3]
Метод normal
Метод normal генерирует случайные числа из нормального распределения. Первым параметром передаётся среднее значение, вторым - стандартное отклонение:
import numpy as np
rng = np.random.default_rng(0)
arr = rng.normal(loc=0.0, scale=1.0, size=5)
print(arr)
Результат выполнения кода:
[ 1.23029068 -0.31178353 0.18598896 -0.24542022 0.72949898]