Эквивалентный код np.random.rand Python - PullRequest
0 голосов
/ 23 марта 2019

Что делает функция numpy.random.rand ()?Я прочитал документацию и там написано Создать массив заданной формы и заполнить его случайными выборками из равномерного распределения по [0, 1) .После прочтения документации я все еще не понимаю, как работает numpy.random.rand ().

Я бы хотел лучшего понимания, связав функцию numpy.random.rand () с любым языком программирования, это может быть C ++, Java и т. Д. Псевдокодовое объяснение numpy.random.rand все еще приемлем и полезен для меня.Например, пример ниже:

equivalentRandomRandPython(size,size) {
      seed = size*size
      return seed*this.random();
}

Я знаю, что это неправильно.Может кто-нибудь помочь объяснить?Я был бы признателен.

РЕДАКТИРОВАТЬ: этот поток имеет еще несколько шагов для решения, и @Apalala дал подсказку относительно эквивалента функции numpy.random.rand для другого кода, который может использоваться для любогоязыки программирования.Numpy.random.rand имеет эквивалент кода, который имеет сильные случайные числа, криптографически .Но связь между этим определением и семенем до сих пор неясна.

Ответы [ 2 ]

1 голос
/ 23 марта 2019

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

Генераторы случайных чисел в Python и numpy работают с лучшими случайными семенами, которые может произвести компьютер.

Для воспроизводимости во время тестирования можно использовать генераторы случайных чисел (seed(n), и n может быть любым, что вы хотите сделать воспроизводимой последовательностью).

Обратите внимание, что для всего, что связано с безопасностью, документы Python рекомендуют использовать модуль secrets .

1 голос
/ 23 марта 2019

Функция больше похожа на код ниже. Вы не изменяете RNG seed этим; Я думаю, что вы неправильно использовали термин в своем примере.

equivalentRandomRandPython(len, wid) {
    for (row=0; row < len; row++) {
        for (col = 0; col < wid; col++) {
            array[row, col] = random()
    return array

Предполагается, что random является каноническим ГСЧ и возвращает число с плавающей запятой в диапазоне [0.0, 1.0). Я упустил распределение массива, но вы спросили больше о случайном аспекте.

...