首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最大限度地增加不同价值观的数量以避免学生作弊

最大限度地增加不同价值观的数量以避免学生作弊
EN

Stack Overflow用户
提问于 2021-11-08 01:10:43
回答 1查看 30关注 0票数 0

所以今年秋天我将进行一次考试,这是一次家庭考试。为了避免学生相互抄袭答案,我将随机地对每个学生给出的值进行随机化。

我想最大限度地提高考试的差异性。

例如,如果每次有两个学生得到相同的变量/变量时,我要数1,否则,我想要最小化我的学生数量的这一总和。

下面可以找到一个玩具例子。请注意,我的考试价值要复杂得多,而且相互依赖。有比简单的迭代值更好的方法吗?

我想做这样的事

代码语言:javascript
复制
a = random.shuffe(range(4, 11))

然后只对每个候选变量迭代a,但是当一个变量超过20个,并且不确定依赖关系从哪里开始时,很难找到一个起点。

代码语言:javascript
复制
from random import randint, randrange
import itertools


def exam_values():
    a = randint(4, 10)
    b = randrange(900, 1000, 25)
    c = randrange(b, 1000, a)
    d = randrange(a, c, 200)
    return a, b, c, d


def compare_students(A, B):
    return sum(1 if a == b else 0 for a, b in zip(A, B))


def compare_students_in_group(group):
    total = 0
    for pair in itertools.product(group, repeat=2):
        total += compare_students(*pair)
    return total


def optimize_students(students, samples=10 ** 4):
    best_group = [exam_values() for _ in students]
    best_group_score = compare_students_in_group(best_group)
    for _ in range(samples):
        group = [exam_values() for _ in students]
        group_score = compare_students_in_group(group)
        if group_score < best_group_score:
            print(group)
            print(best_group_score)
            best_group = group
            best_group_score = group_score
    return best_group


if __name__ == "__main__":
    students = list(range(100))
    samples = 10 ** 4
    optimize_students(students, samples)
EN

回答 1

Stack Overflow用户

发布于 2021-11-08 01:32:34

如果有些问题有变体a..z,而其他问题只有a..d,我认为最好的方法是按照变体数对问题进行排序,并首先为这些问题分配测试/学生。然后充满下一个最多样的。诸若此类。

如果你要为7名学生准备测试,有4道题,答案各不相同: Q1:a..d,Q2:a..c,Q3:a..b,还有a for Q4。我认为最多样的一组测试看起来

代码语言:javascript
复制
a a a a
b b b a
c c a a
d a b a
a b a a
b c b a
c a a a
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69877759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档