最佳结果的总和评级
Overall sum rating with best outcome
我有一个系统可以将 4 人随机分组,然后对他们进行评分:
import numpy
import math
import random
for i in range(1):
# everything is in, see the indentation
members=4
n_groups =4
participants=list(range(1,members+1))*n_groups
#print participants
random.shuffle(participants)
with open('myfile1.txt','w') as tf:
for i in range(n_groups):
group = participants[i*members:(i+1)*members]
for participant in group:
tf.write(str(participant)+' ')
tf.write('\n')
with open('myfile1.txt','r') as tf:
g = [list(map(int, line.split())) for line in tf.readlines()]
print(g)
my_groups =g
def get_rating(group):
return len(set(group))
for each_grp in my_groups:
print((get_rating(each_grp)))
这给出了输出:
[[1, 3, 2, 1], [4, 4, 3, 3], [2, 2, 1, 3], [1, 4, 4, 2]]
3
2
3
3
有什么方法可以将 4 个评分相加以获得总分?就像在这种情况下 (3+2+3+3)=11,如果我改变:
对于我在范围内(1):
这改变了它这样做的循环量:
对于我在范围内(5):
运行 代码 5 次会得到不同的结果,是否有代码可以从 5 次试验中找到最佳总分?
基本上有什么我可以用来总结 4 个评分的东西,然后如果重复,它能从所有重复中选出最好的总分吗?
保持 运行 总数:
total = 0
for each_grp in my_groups:
c = get_rating(each_grp)
total += c
print(c)
您可以使用原始 list
并使用生成器 sum
提升 set
的 len
:
>>> sum(get_rating(each_grp) for each_group in my_groups)
11
我有一个系统可以将 4 人随机分组,然后对他们进行评分:
import numpy
import math
import random
for i in range(1):
# everything is in, see the indentation
members=4
n_groups =4
participants=list(range(1,members+1))*n_groups
#print participants
random.shuffle(participants)
with open('myfile1.txt','w') as tf:
for i in range(n_groups):
group = participants[i*members:(i+1)*members]
for participant in group:
tf.write(str(participant)+' ')
tf.write('\n')
with open('myfile1.txt','r') as tf:
g = [list(map(int, line.split())) for line in tf.readlines()]
print(g)
my_groups =g
def get_rating(group):
return len(set(group))
for each_grp in my_groups:
print((get_rating(each_grp)))
这给出了输出:
[[1, 3, 2, 1], [4, 4, 3, 3], [2, 2, 1, 3], [1, 4, 4, 2]]
3
2
3
3
有什么方法可以将 4 个评分相加以获得总分?就像在这种情况下 (3+2+3+3)=11,如果我改变: 对于我在范围内(1): 这改变了它这样做的循环量: 对于我在范围内(5): 运行 代码 5 次会得到不同的结果,是否有代码可以从 5 次试验中找到最佳总分?
基本上有什么我可以用来总结 4 个评分的东西,然后如果重复,它能从所有重复中选出最好的总分吗?
保持 运行 总数:
total = 0
for each_grp in my_groups:
c = get_rating(each_grp)
total += c
print(c)
您可以使用原始 list
并使用生成器 sum
提升 set
的 len
:
>>> sum(get_rating(each_grp) for each_group in my_groups)
11