Вы можете использовать random.sample
на range
для выбора n различных индексов.
import random
lst = [0] * 10
def insert_ones(n, lst):
for x in random.sample(range(len(lst)), n):
lst[x] = 1
insert_ones(4, lst) # [1, 0, 0, 1, 0, 0, 0, 1, 1, 0]
В качестве альтернативы, вы можете инициализировать свой список непосредственно таким образом, а не изменять его.
import random
def init_positions(n_cells, n_veh):
indices = set(random.sample(range(n_cells), n_veh))
return [1 if x in indices else 0 for x in range(n_cells)]
init_positions(10, 4) # [0, 1, 1, 1, 0, 0, 0, 0, 0, 1]