Получить плавающие случайные числа от -2 до 2, используя random.random в numpy? - PullRequest
0 голосов
/ 07 апреля 2020

Я бы хотел получить случайное значение с плавающей точкой от -2 до +2. Лучшее, что я мог бы сделать:

my_array = [-1, 1]
change_sign = []
for i in range(6):
  change_sign.append(my_array[np.random.randint(low=0, high=2)] * 2)
print(change_sign)
results = np.random.random([6]) * change_sign

Желаемый результат:

[-1.14, -0.25, 0.33, 1.75, 1.99, -0.83]

Но я чувствую, что это можно сделать еще проще. Я не хочу использовать другие numpy методы (например, равномерный), просто random и randint.

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Чтобы получить «n» (= 10) случайных чисел между «a» (= -2) и «b» (= 2), используйте следующую формулу:

n = 10
a = -2
b = 2

r = a + (b - a) * numpy.random.random(n)

Результат:

array([ 0.29379447,  1.0017837 ,  0.46310858, -1.79242304,  1.04047713,
       -0.71521254,  0.32970214,  1.16248318, -1.12456574, -0.47470759])
1 голос
/ 07 апреля 2020

np.random.random возвращает случайное смещение от 0,0 до 1,0

, поэтому вы можете умножить на 4 и вычесть 2, чтобы диапазон был от -2,0 до 2,0

np.random.random(6)*4 - 2
array([ 1.41044053, -0.97521584,  1.55446329, -0.54314241, -1.55691897,
        0.28276924])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...