Python: Как я могу случайно смешать два списка? - PullRequest
0 голосов
/ 22 ноября 2018

Если я сгенерирую два случайных списка, например:

N=5
X=20

parent1 = np.random.choice(X, N, replace=True)
parent2 = np.random.choice(X, N, replace=True)

даст два списка, например:

[2,5,1,1,12]
[3,18,4,5,1]

Как я могу создать новый список, который представляет собой случайное сочетаниедва списка с одинаковым количеством цифр?

например,

[2,18,1,5,12]

или

[18,5,1,12,5]

Не имеет значения, какой порядок.

Ответы [ 4 ]

0 голосов
/ 22 ноября 2018

Один из способов будет:

N=5
select_one = np.random.randint(0,2,N) # Outputs an array of 1 or 0s
mixed_list = select_one*parent1 + (1 - select_one)*parent2   

Если вы также хотите случайным образом переставить элементы списка, вы можете использовать:

mixed_list = np.random.permutation(rand_fact*parent1 + (1 - rand_fact)*parent2)
0 голосов
/ 22 ноября 2018

Продолжая свой пример, вы можете просто попробовать это:

result = np.random.choice(np.concatenate([parent1,parent2]), N, replace=False)

Является ли выборка с заменой или нет - ваш выбор (аргумент replace).

0 голосов
/ 22 ноября 2018

если вам даны parent1 и parent2, вы можете использовать np.choose:

which_one = np.random.int(2, size=N).astype(np.bool)
out_array = np.choose(which_one, [parent1, parent2])

, однако имейте в виду, что если parent1 и parent2 являются случайными согласнов своем коде, тогда вы можете просто сделать

out_array = np.random.choice(X, N, replace=True)
0 голосов
/ 22 ноября 2018

Несколько способов получить равномерный случайный выбор из 2 списков.

  • Случайный 0 или 1 для выбора списка, затем случайный выбор в списке.
  • Случайное число доСумма списков, затем используйте логику, чтобы выбрать из первого или второго списка в соответствии с этим числом.их относительной длины, последние образцы в соответствии с относительной длиной списков.
...