From f51aee83708673ef9941174951bec9aee80cb03c Mon Sep 17 00:00:00 2001 From: Gabriel Dos Reis Date: Thu, 31 Dec 2015 14:56:12 -0800 Subject: Avoid modulus bias in 'random()' usage. --- src/algebra/divisor.spad.pamphlet | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/algebra/divisor.spad.pamphlet') diff --git a/src/algebra/divisor.spad.pamphlet b/src/algebra/divisor.spad.pamphlet index f8c15f86..162e67aa 100644 --- a/src/algebra/divisor.spad.pamphlet +++ b/src/algebra/divisor.spad.pamphlet @@ -164,7 +164,7 @@ FractionalIdeal(R, F, UP, A): Exports == Implementation where +/[random()$F * qelt(v, j) for j in minIndex v .. maxIndex v] else randomLC(m, v) == - +/[(random()$Integer rem m::Integer) * qelt(v, j) + +/[random(m)$Integer * qelt(v, j) for j in minIndex v .. maxIndex v] minimize i == @@ -313,7 +313,7 @@ ModularHermitianRowReduction(R): Exports == Implementation where lr := [i for i in minRowIndex x .. maxRowIndex x]$List(Integer) for i in 1..(n := binomial(nr, nc)) repeat (d := determinant x(enumerateBinomial(lr, nc, i), lc)) ~= 0 => - j := i + 1 + (random()$Z rem (n - i)) + j := i + 1 + random(n - i)$Z return gcd(d, determinant x(enumerateBinomial(lr, nc, j), lc)) 0 -- cgit v1.2.3