Python - генерация случайных чисел в заданном соотношении
Всем привет! Нужен скрипт который генерирует список из случайных чисел так чтобы во всем списке положительных чисел было в 2 раза больше отрицательных. Текущий вариант кода ниже.
import numpy as np
initial=10
npoints=5
upper=20
lower=20
a=[initial]
for b in range(npoints):
value = np.random.randint(-(lower),upper)
b=a[-1]+value
a.append(b)
print(a)
Ответы (1 шт):
Автор решения: magistar
→ Ссылка
Предлагаю заполнять только положительными числами, а потом сделать какое-то количество отрицательными.
Например, мы можем выбрать npoints // 3 для вашего случая различных индексов с помощью sample из модуля random (перед этим нужно его импортировать, разумеется).
list_index = random.sample(range(0, len(a)-1), npoints // 3)
То есть выбрали npoints // 3 различных индексов, присутствующих в списке a.
Затем меняем нужные нам элементы с помощью цикла.
for index in list_index:
a[index] = -(a[index])