]> Cypherpunks repositories - gostls13.git/commitdiff
big: add random number generation
authorFlorian Uekermann <florian@uekermann-online.de>
Mon, 18 Oct 2010 18:09:20 +0000 (14:09 -0400)
committerRuss Cox <rsc@golang.org>
Mon, 18 Oct 2010 18:09:20 +0000 (14:09 -0400)
Adds func (z *Int) RandIntn(src rand.Source,n *Int) *Int

R=rsc
CC=golang-dev, gri
https://golang.org/cl/2315045

src/pkg/big/int.go

index c78532011e0c17b9d69b515731195fbb96817e7e..46e0087343a9a0bce422cd0a637b8e4d52efecd8 100755 (executable)
@@ -6,8 +6,10 @@
 
 package big
 
-import "fmt"
-
+import (
+       "fmt"
+       "rand"
+)
 
 // An Int represents a signed multi-precision integer.
 // The zero value for an Int represents the value 0.
@@ -545,6 +547,18 @@ func ProbablyPrime(z *Int, n int) bool {
 }
 
 
+// Rand sets z to a pseudo-random number in [0, n) and returns z. 
+func (z *Int) Rand(rnd *rand.Rand, n *Int) *Int {
+       z.neg = false
+       if n.neg == true || len(n.abs) == 0 {
+               z.abs = nil
+               return z
+       }
+       z.abs = z.abs.random(rnd, n.abs, n.abs.bitLen())
+       return z
+}
+
+
 // ModInverse sets z to the multiplicative inverse of g in the group ℤ/pℤ (where
 // p is a prime) and returns z.
 func (z *Int) ModInverse(g, p *Int) *Int {