Форум сайта python.su
Нужно составить программу которая будет разделять список L на две части ( не обязательно равные) B и С и обьединять их другой список D , где каждый элемент списка D имеет 50% шанс быть из списка B и 50% шанс быть из списка C.
Я застрял на моменте с 50% на 50%.
def shuffle(L):
listlen = int(len(L)/2)
B = L[:listlen]
C = L[listlen:]
D = []
[\code]
Отредактировано ProPall (Ноя. 17, 2016 20:19:33)
Офлайн
ProPall
Что по твоему делает or?
Офлайн
IskatelДа, там ошибка. Or - логический оператор который проверяет два операнда. Если хотя бы одно выражение будет истенным , то и выражение будет истенным.
ProPallЧто по твоему делает or?
Офлайн
В условии подозрительно отсутствует длина результирующего списка.
И классно ты подредактировал - то хоть был намек что элементы не должны повторяться, а теперь и его нет.
ИМХО делай random.shuffle половинок, а потом выбери половину из B и половину из D и объедини.
ЗЫ. что впринципе будет аналогично тому, что сделать random.shuffle для исходного списка, и выбрать половину… зачем на 2 делить?
Отредактировано Iskatel (Ноя. 17, 2016 21:00:25)
Офлайн
IskatelДлина должна быть такая же как и у оригинального списка. То есть фактически код заменяет random.shuffle. Твоя идея с random.shuffle не подходит , ибо тогда каждый элемент результатирующего списка не будет иметь 50 процентый шанс быть из списка B , и 50 процентый шанс быть из списка C.
В условии подозрительно отсутствует длина результирующего списка. И классно ты подредактировал - то хоть был намек что элементы не должны повторяться, а теперь и его нет.ИМХО делай random.shuffle половинок, а потом выбери половину из B и половину из D и объедини.ЗЫ. что впринципе будет аналогично тому, что сделать random.shuffle для исходного списка, и выбрать половину… зачем на 2 делить?
Офлайн
ProPall
ибо тогда каждый элемент результатирующего списка не будет иметь 50 процентый шанс быть из списка B , и 50 процентый шанс быть из списка C.
Офлайн
IskatelЕсли сделать как предлогаешь ты то список будет на половину состоять только из значений из списка B а вторая половина только из значений из списка C. По заданию дано, что КАЖДОЕ значение имеет шанс быть из B или быть из С.
Офлайн
ProPall
Если сделать как предлогаешь ты то список будет на половину состоять только из значений из списка B а вторая половина только из значений из списка C. По заданию дано, что КАЖДОЕ значение имеет шанс быть из B или быть из С.
Отредактировано Iskatel (Ноя. 17, 2016 22:26:49)
Офлайн
Предполагается, что выбор осуществляется без возвращения, как только в одном из списков элементы иссякнут, выбор завершается
import random p = 0.5 # Можно поставить другое значение, например 0.3, тогда с вер. 0.3 будет выбор из C и 0.7 из B C = [1,2,3] B = [5,6,7,8] D = [] while C and B: if random.random() < p: D.append(C.pop()) else: D.append(B.pop())
Офлайн
scidamВозникли вопросы
Предполагается, что выбор осуществляется без возвращения, как только в одном из списков элементы иссякнут, выбор завершается
Отредактировано D.O (Ноя. 18, 2016 19:13:32)
Офлайн