testutils: snaha o to, aby v daném čísle bylo více řešení od jednoho řešitele

This commit is contained in:
Anet 2020-02-11 21:17:17 +01:00
parent 73c440b7fd
commit 3b8ba5b036

View file

@ -167,6 +167,13 @@ def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size)
k+=1
cisla = rocnik_cisla[k-1]
for ci in range(3, len(cisla)+1): # pro všechna čísla
resitele_size = round(7/8 * 30 * size) # očekáváný celkový počet řešitelů
poc_res = rnd.randint(round(resitele_size/8), round(3*resitele_size/4))
# dané číslo řeší něco mezi osminou a tříčtvrtinou všech řešitelů
# (náhodná hausnumera, možno změnit)
# účelem je, aby se řešení generovala z menší množiny řešitelů a tedy
# bylo více řešení od jednoho řešitele daného čísla
resitele_cisla = rnd.sample(resitele, poc_res)
for pi in range(1, ((size + 1) // 2) + 1):
poc_op = rnd.randint(1, 4) # počet opravovatelů
@ -226,9 +233,9 @@ def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size)
for ri in range(poc_reseni):
if rnd.randint(1, 10) == 6:
# cca desetina řešení od více řešitelů
res_vyber = rnd.sample(resitele, rnd.randint(2, 5))
res_vyber = rnd.sample(resitele_cisla, rnd.randint(2, 5))
else:
res_vyber = rnd.sample(resitele, 1)
res_vyber = rnd.sample(resitele_cisla, 1)
res = Reseni.objects.create(forma=rnd.choice(Reseni.FORMA_CHOICES)[0])
# problem a resitele přiřadíme později, ManyToManyField
# se nedá vyplnit v create()