[GAP Forum] RandomMat with really random source
Alexander Konovalov
alexk at mcs.st-andrews.ac.uk
Wed Jul 23 22:40:08 BST 2014
Dear Ha,
On 23 Jul 2014, at 22:19, Ha T. Lam <hatlam at gmail.com> wrote:
> Dear GAP forum,
>
> I'm trying to generate random 2x2 matrices with entries from GF(947).
> Normally, I would just use RandomMat(2,2,GF(947)), but I want to get
> different results every time I start GAP. I found that RandomSource( r, dev
> ) from the io package (
> http://www.gap-system.org/Manuals/pkg/io/doc/chap6.html) allows randomness
> from /dev/random, but I don't know how to use it as the random source for
> RandomMat. Any advice?
This is doable - first you have to create a real random source:
gap> rs:=RandomSource(IsRealRandomSource,"random");
<a real random source>
Then you may create a list of all elements of GF(947) and pick up
elements from it using "Random":
gap> gf:=AsList(GF(947));;
gap> Random(rs,gf);
Z(947)^42
gap> Random(rs,gf);
Z(947)^817
Now you may take the code for RandomMat from the library and adjust it to
say ReallyRandomMat which will use the approach above instead of calling
Random( GF(947) );
There is a warning, however. If it may be enough for you to use dev/urandom
instead of dev/random, then it is advised to go for the 'urandom' option.
I remember once we were very puzzled by the slow performance of GAP on the
server where dev/random was used to generate some random strings. It was
not possible to reproduce the slowdown at all while using GAP interactively.
Then we figured out what happened: dev/random needs some noise in the
entropy pool, and it may block when the pool is empty to wait for some more
events to happen. There was a plenty of events when one was sitting in front
of the keyboard; however, that was not the case on the server when GAP was
running as a daemon. So please be aware of this feature.
Hope this helps,
Alexander
More information about the Forum
mailing list