Разбить множество на два случайных подмножества
Есть множество строк, полученное из списка удалением дубликатов:
keys = []
# заполнение списка keys
st = set(keys)
Нужно получить два множества st1 и st2 такие, что их объединение есть исходное множество st, и они не пересекаются, причём разбить случайным образом так, чтобы любое разбиение (а их всего 2^{st.size}) было равновероятно.
Как это можно сделать в python'е ?
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Сгенерировать случайное число от 0 до 2^{st.size}-1 и сопоставить единицы в его бинарном представлении с номерами элементов, составляющих первое подмножество.
Однако set не поддерживает индексацию, и для выполнения извлечения определённых элементов, видимо, придётся вернуться обратно к списку.