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])
→ Ссылка