请各位高手指点思路,能附代码万分感谢!
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))
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
- ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
- ¥15 Arcgis相交分析无法绘制一个或多个图形
- ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
- ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
- ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
- ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
- ¥30 3天&7天&&15天&销量如何统计同一行
- ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
- ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型