#python #random
Вопрос:
Я хочу сгенерировать N случайных наборов данных из списка случайных чисел. Я могу легко генерировать n случайных значений, используя это:
normal(loc=mu, scale=sigma, size=n)
где loc-среднее значение, масштаб-стандартное отклонение, размер-количество значений.
Но теперь я хочу повторить этот генератор случайных чисел N раз, чтобы создать N наборов данных, отличающихся друг от друга. Кто-нибудь может помочь? Я чувствую, что это нетрудно сделать, но я очень новичок в программировании.
Комментарии:
1. Чем они отличаются друг от друга? Вы хотите взять N выборок нормального распределения с этими параметрами?
2. Я имею в виду N различных наборов данных, учитывая диапазон моего распределения. Например, предположим, что у меня среднее значение 2 при Std 1, и я генерирую 5 случайных чисел для этого набора: (1.7, 1.3, 0.4, 1.8, 0.7). Теперь предположим, что я хочу сгенерировать еще 1000 из них, которые все еще находятся в дистрибутиве. Как бы я это сделал? Ценю любую помощь!
Ответ №1:
Если вам нужны n
выборки k
значений, сгенерированных из нормального распределения, то
np.random.normal(loc=mu, scale=sigma, size=(n, k))
Пример:
>>> mu, sigma, n, k = 0, 0.1, 10, 5
>>> np.random.normal(loc=mu, scale=sigma, size=(n, k))
array([[-0.07518366, -0.1949778 , -0.00940813, 0.00993604, -0.07682189],
[-0.03299335, 0.01224153, 0.15198659, 0.18654867, 0.18538708],
[-0.10499824, 0.11863809, -0.08196595, -0.07259012, -0.13982268],
[ 0.08297579, -0.08121311, 0.19496005, 0.00710787, 0.04434566],
[ 0.00057888, -0.18052104, -0.02845761, 0.03330374, -0.08525697],
[-0.11370541, 0.01166695, -0.09914575, 0.14135651, -0.03463862],
[-0.13043708, 0.16128385, 0.03448309, 0.20302464, 0.02949679],
[-0.08506748, -0.08459261, 0.05036709, -0.05956242, -0.10132293],
[ 0.07130109, -0.01409814, -0.06980729, 0.05180577, 0.19270917],
[ 0.04884829, -0.02219597, 0.04511094, -0.10689077, -0.00715145]])
Комментарии:
1. @AmmarBayyari, не за что. Если этот ответ решает вашу проблему, установите флажок, чтобы этот вопрос был удален из очереди без ответа.
Ответ №2:
попробуйте это:
import numpy as np
repeat = 100
mu, sigma = 0, 0.1 # mean and standard deviation
[np.random.normal(mu, sigma, 10) for r in range(repeat)]
Вы можете прочитать документ о random
:
нормальный(loc=0,0, масштаб=1,0, размер=Нет)
Параметры
размер : int или кортеж int, необязательная форма вывода. Если заданная форма, например,
(m, n, k)
, тоm * n * k
рисуются образцы. Если значение size равноNone
(по умолчанию), возвращается одно значение, еслиloc
scale
оба скаляра являются скалярами. В противном случаеnp.broadcast(loc, scale).size
будут взяты образцы.
вы можете использовать size
, как показано ниже:
repeat ,length =2 , 4
mu, sigma = 0, 0.1
np.random.normal(mu, sigma, size=(repeat,length))
Выход:
array([[ 0.09247016, 0.04766574, -0.16065042, 0.15859744],
[ 0.08376381, 0.01822829, -0.0690609 , -0.10800701]])
Комментарии:
1. @AmmarBayyari добро пожаловать, чувак. если это правильно. пожалуйста, прочитайте эту ссылку : meta.stackexchange.com/questions/5234/…