请各位高手指点思路,能附代码万分感谢!
1、现有Excel若干行(很多),每行都有不连续的整数组成(数量不定);
2、现需要在1-45中随机选取5个不重复的数,按从小到大排列;
3、要求:随机组合的结果中的元素与Excel每行元素重复数量不能超过4个(重复3个、2个、1个、0个)
4、输出所有符合要求的结果
Python如何实现随机组合结果元组重复数量不能超过某个值?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- jingluan666 2020-08-30 13:04关注
如果随机生成一个
from random import randint, sample import pandas as pd excel = pd.read_excel(r"d:\test.xlsx") rows=excel.values #[] # for i in range(20): # rows.append([randint(1,50) for _ in range(randint(10,30))]) data = range(1,46) sampleCount=5 def getSample(data): return sorted(sample(data, sampleCount)) sp = getSample(data) while True: count=0 for row in rows: same = list(set(sp).intersection(set(row))) #交集 if len(same)>=4: sp = getSample(data) break else: count = count + 1 if count == len(rows): break print(sp)
所有可能
from random import randint, sample import pandas as pd import itertools excel = pd.read_excel(r"d:\test.xlsx") rows=excel.values #[] # for i in range(20): # rows.append([randint(1,50) for _ in range(randint(10,30))]) data = range(1,11) #使用45求组合时很慢,这里用10个 sampleCount=5 pers = list(itertools.combinations(data, sampleCount)) #组合 for per in pers: count=0 for row in rows: same = list(set(per).intersection(set(row))) # 交集 if len(same) >= 4: break else: count = count + 1 if count== len(rows): print(sorted(per))
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥18 模拟电路问题解答有偿
- ¥15 Matlab在app上输入带有矩阵形式的初始条件发生错误
- ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
- ¥15 误删注册表文件致win10无法开启
- ¥15 请问在阿里云服务器中怎么利用数据库制作网站
- ¥60 ESP32怎么烧录自启动程序
- ¥50 html2canvas超出滚动条不显示
- ¥15 java业务性能问题求解(sql,业务设计相关)
- ¥15 52810 尾椎c三个a 写蓝牙地址
- ¥15 elmos524.33 eeprom的读写问题