English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Случайные числа в NumPy

Что такое случайные числа?

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

Псевдослучайные и истинно случайные

Компьютер работает на программах, программы - это authoritative set of instructions. Следовательно, это означает, что必须有某种 алгоритм для генерации случайных чисел.
Если существует программа для генерации случайных чисел, то её можно предсказать, поэтому она не является真正的 случайной.
Случайные числа, генерируемые с помощью алгоритмов, называются псевдослучайными числами.
Можем ли мы генерировать настоящие случайные числа?
Да. Для генерации真正的 случайного числа на нашем компьютере нам нужно получить случайные данные из внешнего источника. Внешний источник обычно是我们的 клавиатурные нажатия, движения мыши, сетевые данные и т.д.
Мы не нуждаемся в真正的 случайных числах, если они не связаны с безопасностью (например, ключи шифрования) или если основа приложения - случайность (например, цифровая рулетка).
В этом руководстве мы будем использовать伪случайные числа.

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

NumPy предоставляет модуль random для обработки случайных чисел, вот пример генерации случайного целого числа от 0 до 100:

 >>> from numpy import random
 >>> x = random.randint(100)
 >>> print(x)
 56

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

Метод rand() модуля random возвращает случайное浮инговое число от 0 до 1, вот пример генерации случайного浮ингового числа от 0 до 100:

 >>> from numpy import random
 >>> x = random.rand()
 >>> print(x)
 0.4755747164243269

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

В NumPy мы можем использовать два метода из предыдущего примера для создания случайных массивов, метод randint() принимает параметр size, в котором можно указать форму массива.
Вот пример генерации 1-D массива с 5 случайными целыми числами от 0 до 100:

 >>> from numpy import random
 >>> x = random.randint(100, size=(5))
 >>> print(x)
 [36 14 12 91 36]

Генерация 2-D массива с 3 строками, в каждой строке 5 случайных целых чисел от 0 до 100:

 >>> from numpy import random
 >>> x = random.randint(100, size=(3, 5))
 >>> print(x)
 [[20 64 23 6 66]
  [74 11 21 61 70]
  [24 47 22 22 31]]

Метод rand() также позволяет指定 форму массива. Вот пример генерации 1-D массива с 5 случайными浮инговыми числами:

 >>> from numpy import random
 >>> x = random.rand(5)
 >>> print(x)
 [0.63254731 0.0275278 0.83592219 0.41890601 0.84496798]

Генерировать 2-D массив с 3 строками, содержащими 5 случайных чисел:

 >>> from numpy import random
 >>> x = random.rand(3, 5)
 >>> print(x)
 [[0.51798216 0.70541454 0.03600922 0.2279383 0.2184512 ]
  [0.91734846 0.07877026 0.75949221 0.7876666 0.20983625]
  [0.25935065 0.37637584 0.7793815 0.65035139 0.66673048]

Случайные числа из массива с помощью метода choice()

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

 >>> from numpy import random
 >>> x = random.choice([3, 5, 7, 9])
 >>> print(x)
 5

Метод choice() также позволяет возвращать массив значений. Добавьте параметр size, чтобы指定 форму массива. Генерируйте двумерный массив, состоящий из значений из массива параметров (3, 5, 7 и 9):

 >>> from numpy import random
 >>> x = random.choice([3, 5, 7, 9], size=(3, 5))
 >>> print(x)
 [[7 9 7 5 9]
  [3 3 3 7 9]
  [7 5 9 3 7]