From: "robin" <robin51@dodo.com.au>
Subject: Re: KISS4691, a potentially top-ranked RNG.
Date: Mon, 26 Jul 2010 12:50:58 +1000
Date: 2010-07-26T12:50:58+10:00 [thread overview]
Message-ID: <4c4cf81a$0$12395$c30e37c6@exi-reader.telstra.net> (raw)
In-Reply-To: 9ea9185a-23e7-4265-acde-097c5c14ca14@y11g2000yqm.googlegroups.com
"Gene" <gene.ressler@gmail.com> wrote in message
news:9ea9185a-23e7-4265-acde-097c5c14ca14@y11g2000yqm.googlegroups.com...
"geo" <gmarsaglia@gmail.com> wrote in message news:a82cebe3-cdb9-48af-8080-bca935eeb9b1@l14g2000yql.googlegroups.com...
|I have been asked to recommend an RNG
| (Random Number Generator) that ranks
| at or near the top in all of the categories:
| performance on tests of randomness,
| length of period, simplicity and speed.
| The most important measure, of course, is
| performance on extensive tests of randomness, and for
| those that perform well, selection may well depend
| on those other measures.
|
| The following KISS version, perhaps call it KISS4691,
| seems to rank at the top in all of those categories.
| It is my latest, and perhaps my last, as, at age 86,
| I am slowing down.
|
| Compiling and running the following commented
| C listing should produce, within about four seconds,
| 10^9 calls to the principal component MWC(), then
| 10^9 calls to the KISS combination in another ~7 seconds.
|
| Try it; you may like it.
|
| George Marsaglia
Here's the PL/I version:
(NOSIZE, NOFOFL):
RNG: PROCEDURE OPTIONS (MAIN, REORDER);
declare (xs initial (521288629), xcng initial (362436069),
Q(0:4690) ) static fixed binary (32) unsigned;
MWC: procedure () returns (fixed binary (32) unsigned);
/*takes about 4.2 nanosecs or 238 million/second*/
declare (t,x,i) fixed binary (32) unsigned;
declare (c initial (0), j initial (4691) ) fixed binary (32) unsigned static;
if j < 4690 then j = j + 1; else j = 0;
x = Q(j);
t = isll(x,13)+c+x; c = (t<x)+isrl(x,19);
Q(j)=t;
return (t);
end MWC;
CNG: procedure returns (fixed binary (32) unsigned);
xcng=bin(69069)*xcng+bin(123);
return (xcng);
end CNG;
XXS: procedure returns (fixed binary (32) unsigned);
xs = ieor (xs, isll(xs, 13) );
xs = ieor (xs, isrl(xs, 17) );
xs = ieor (xs, isll(xs, 5) );
return (xs);
end XXS;
KISS: procedure returns (fixed binary (32) unsigned);
return ( MWC()+CNG+XXS ); /*138 million/sec*/
end KISS;
declare (i,x) fixed binary (32) unsigned;
/* Initialize: */
do i = 0 to 4691-1; Q(i) = CNG+XXS; end;
put skip list (q(0), q(4690));
put skip list ('initialized'); put skip;
do i = 0 to 1000000000-1; x=MWC(); end;
put skip edit (" MWC result=3740121002 ",x) (a, f(23));
do i = 0 to 1000000000-1; x=KISS; end;
put skip edit ("KISS result=2224631993 ",x) (a, f(23));
end RNG;
next prev parent reply other threads:[~2010-07-26 2:50 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <a82cebe3-cdb9-48af-8080-bca935eeb9b1@l14g2000yql.googlegroups.com>
2010-07-25 0:49 ` KISS4691, a potentially top-ranked RNG Gene
2010-07-26 2:50 ` robin [this message]
2010-07-27 5:46 ` robin
2010-07-30 10:46 ` Uno
2010-08-03 10:41 ` robin
2010-08-03 17:15 ` James Waldby
2010-08-03 17:35 ` Dann Corbit
2010-08-03 20:34 ` Peter Flass
2010-08-04 4:20 ` Uno
2010-08-04 8:31 ` robin
2010-08-04 7:56 ` robin
2010-08-05 21:07 ` Uno
2010-08-06 10:11 ` robin
2010-08-09 14:52 ` mecej4
[not found] ` <i2fir2$op4$1@speranza.aioe.org>
2010-07-27 10:19 ` robin
2010-07-30 8:33 ` Uno
[not found] <4dae2a4b$0$55577$c30e37c6@exi-reader.telstra.net>
2011-04-28 1:14 ` robin
2011-04-28 11:42 ` e p chandler
2011-04-29 1:50 ` David Bernier
2011-04-29 2:09 ` Ian Collins
2011-04-29 3:01 ` Eric Sosman
2011-04-29 3:09 ` Ian Collins
2011-05-08 7:34 ` Uno
2011-05-11 5:38 ` Marni Zollinger
2011-04-29 6:15 ` nmm1
2011-04-29 3:16 ` David Bernier
2011-04-29 2:34 ` glen herrmannsfeldt
2011-04-29 7:04 ` Uno
2011-04-30 10:48 ` robin
2011-05-05 1:12 ` Uno
2011-04-29 15:13 ` Keith Thompson
2011-04-29 17:41 ` glen herrmannsfeldt
2011-04-29 19:53 ` Keith Thompson
2011-05-05 23:38 ` Michael Press
2011-04-29 22:45 ` Seebs
2011-04-30 4:36 ` Randy Brukardt
2011-04-29 22:43 ` Seebs
2011-04-29 9:43 ` robin
2011-05-01 15:31 ` Thad Smith
2011-05-01 19:58 ` Ian Collins
2011-05-02 0:01 ` James Kuyper
2011-05-02 0:42 ` Ian Collins
2011-05-02 2:34 ` James Kuyper
2011-05-02 2:50 ` glen herrmannsfeldt
2011-05-02 4:21 ` Thad Smith
2011-05-02 7:31 ` nmm1
2011-05-23 4:18 ` robin
2011-05-23 7:20 ` robin
2011-05-23 6:52 ` robin
2011-05-23 6:52 ` robin
2011-05-23 6:52 ` robin
2011-05-23 6:53 ` robin
2011-05-23 7:16 ` Georg Bauhaus
2011-06-28 7:19 ` robin
2011-06-28 8:44 ` Vinzent Hoefler
2011-06-28 9:19 ` Chris H
2011-06-28 9:14 ` Georg Bauhaus
2011-06-28 11:59 ` robin
2011-06-28 12:16 ` Chris H
2011-06-28 15:44 ` Peter Flass
2011-06-28 12:33 ` James Kuyper
2011-06-28 13:53 ` Georg Bauhaus
2011-06-28 22:39 ` Brian Salter-Duke
2011-06-28 12:32 ` James Kuyper
2011-06-28 13:03 ` Chris H
2011-06-28 14:25 ` James Kuyper
2011-06-28 15:01 ` Chris H
2011-06-29 0:20 ` James Kuyper
2011-06-29 8:38 ` Michael Press
2011-06-28 16:04 ` Joe Pfeiffer
2011-06-28 16:36 ` Chris H
2011-06-28 16:51 ` Joe Pfeiffer
2011-06-29 0:27 ` James Kuyper
2011-06-29 1:00 ` Joe Pfeiffer
2011-06-29 16:48 ` Phil Carmody
2011-06-28 16:52 ` Joe Pfeiffer
2011-06-28 17:06 ` David Bernier
2011-06-28 21:11 ` Gib Bogle
2011-06-29 4:47 ` Mart van de Wege
2011-07-02 6:49 ` Gib Bogle
2011-07-02 15:59 ` Mart van de Wege
2011-07-02 21:57 ` Gib Bogle
2011-06-29 7:36 ` nmm1
2011-06-29 9:58 ` Georg Bauhaus
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox