Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #139093
| Subject | Re: Multi-channel rand() |
|---|---|
| Newsgroups | comp.lang.c |
| References | <pvrv1d$4ls$1@dont-email.me> <bpNUD.21754$X_3.4267@fx01.am4> <c720a209-9a04-47ab-b9e1-29b1b570231a@googlegroups.com> <j4PUD.128187$Pu1.45249@fx11.am4> <PiPUD.36924$Bu5.8081@fx19.iad> |
| From | Bart <bc@freeuk.com> |
| Message-ID | <SfQUD.95217$ck7.2645@fx02.am4> (permalink) |
| Organization | virginmedia.com |
| Date | 2018-12-26 19:03 +0000 |
On 26/12/2018 17:58, Richard Damon wrote:
> On 12/26/18 12:42 PM, Bart wrote:
>> On 26/12/2018 15:58, Rick C. Hodgin wrote:
>>> On Wednesday, December 26, 2018 at 10:48:31 AM UTC-5, Bart wrote:
>>
>>>> However this depends entirely on the PRNG used. The point of my example
>>>> is to show how easy it is to superimpose a 'multi-channel' API on a
>>>> single-stream PRNG.)
>>>
>>> I agree. That's what I intended to do, but I didn't know where
>>> there was good prng source code that was in the Public Domain.
>>>
>>> I'm looking for a nicely distributed prng. I'm using the built-
>>> in one with Visual C++ presently and it has really odd patterns
>>> which, when scaled into a lesser range (like 1-10), produce oft-
>>> repeated values.
>>
>> Really? I tried the simple PRNG I showed, using a%10 to produce values
>> from 0 to 9, which is supposed to be really bad idea, and got this
>> distribution over 1 billion calls for each of the digits:
>>
>> 0: 100011113
>> 1: 99989920
>> 2: 100009423
>> 3: 100004327
>> 4: 99991057
>> 5: 100000307
>> 6: 99998986
>> 7: 100014477
>> 8: 99982849
>> 9: 99997541
>>
>> A perfect distribution would have 100,000,000 of each, so these are out
>> by 1 in 10,000 or so.
>>
>
> The low order bits of many random number gererators tend to be well
> distributed, but often have patterned between them. Try running an
> analysis of first order transition, a 2d histogram of consecutive
> values.
I get the following, which counts the transitions from 0..9 to 0..9 over
one billion random-10 calls; there should be 10 million of each:
0 1 2 3 4
0 10000414 9999532 9996911 10002996 10001089
1 10001890 9998825 9997192 9999400 10001881
2 9998577 9998102 10004200 10001680 9996506
3 10003276 9999146 10002297 9996187 10000437
4 10005587 9999423 10001425 10004535 9996548
5 10001042 9998557 10001422 10002560 9998100
6 9999956 9999384 10004437 9996324 9999880
7 9999302 10000587 10004574 10000900 9997869
8 10002703 9996356 9999180 9999575 9997773
9 9998366 10000008 9997785 10000170 10000974
5 6 7 8 9
0 10000507 10002884 10006255 9997911 10002615
1 9993337 10001477 9999119 9999063 9997736
2 10003593 10004684 10000610 10001144 10000327
3 10001675 10001016 9999818 9999108 10001367
4 9995269 9996443 9998453 9996897 9996477
5 9998838 10001826 9998264 10002608 9997090
6 9999320 9998757 10010484 9993826 9996618
7 10005658 9998981 10002985 10002377 10001243
8 10002130 9990532 9997172 9995304 10002124
9 9999980 10002386 10001317 9994611 10001944
That doesn't seem too bad. If I look at sequences of the same number, I
get maximum sequence lengths of 10 to 13 digits over 1e9 digits, which
seems a trifle high to me, but I'm not enough of an expert to say for
sure. (Testing with hex digits 0 to F avoiding a mod 10, I get sequence
lengths of 8 to 11, also higher than I expected).
The actual output, for 0..9, looks like the following, where nothing
really stands out:
172719542559972470635781476779768246152771301359732754928962007319072058
629568748614382035743833479538729684345257533742676855451529244801094767
812845890221385497061155762986727198813834346321959899873668463923055975
820941872847984046024835753195663531498820214115074959914531603749469529
447492979631267615026293843971150249392770292356156346308504037109626400
687132451528921091199043115686466904987229756385495862306971467194013476
468484351392791376862638613277276953688102523557649143386693836629518504
016857650209349040717607109415786179565319122177210867907124819031404557
671074295474450339453126838352065038456508225959989772906639803211130836
098546491616976054834068466660813854447318244159358029550917371871288233
559382917453279701389983903548012658128342595855912771991845537501860912
976324408123521349020805014641587946984532084899703614377067591706110310
790948834498366595574590346531865494008536798788697237452946718037886658
251930400805408988452350125628447321814405565496407859677929743739476726
621429906839610740551678170087472138600367142684773877141494292000077312
320161874381554917167810024319572249156985780215103297217226479280392025
790206829738083633657898496359947060064216367055190104444333906479331793
631338124102557467838758910838355710154816866412636938145300416284845446
428548049328719393982268159632293633844568486822260101894037487930916339
226189861855838502767023693362611655754742764496149337285706521711616949
693399855382774224982846899446580872169881455634183670705917669996067516
636716906082326760179831355393548519138204143743929819493599643980481592
858481977406972994238357183540253907631810947637105309470720498375266560
287541778780192967265975728848473810798583130669021704416604521336971650
235168192979034276941924284298081308416724706162288832366468331013326705
514050453012741545562675098290262635177503322692149528258143381928782237
836453498509792719958166229644782199662855436955458577685177768808947644
292329650351733644970222707237033851363747053960753560213256150579938571
754690088666533998897506573748269695873868473355069182432798294585939087
278614458798264473506096765847363924798340269581734932741387794163201871
078290103150044878351589723445743034895043139210736415367258653754399198
023197879472133976639766535804598838828953469418250017654927135906875846
934096369352398596684887099923454796612367818293932918695749329867409088
482478021464904782075560097494715000964144323132023490179441227566281015
421387236254870048522174392492217458519998931129460646332813111227570768
163112564571256040832661928009657915893955653952998651842209696218767618
656675909074262127764692649315272831253557167983530950602093480083542017
894425060519253627433048099634677052985647589666589604117822779983193064
501674821191063378701930188846124370319410694418600855887622424865536764
172907859770891252606835105041927847157957921838968869530564914941111572
960099042041803230361820792030432141848619023953206708204713708656463684
369929960741907430398234662361336624842148687125876462407783572837395626
036470723189190384233999710230258825227977775136577341133293624903917442
621226665165497741097844919110132409321295921170680447094461217476637027
649450490580660153504840671641235998383330021704703991269242734229725965
158768137260143224119998456064902402619320787836945426883479737439370944
638295708490754603910071698384361185677013147547245140566515644772891404
824257451069703703689838531548011192327048355483143749496746522124654119
292061715703807462288918706509773091431279820363073377315168500196979787
340380690820333367901502670217623988614790539089599630563755373073070336
576100796813754529442081386347201545860973561168890077934255341151020125
449089818407416317212138515451522093771067384699270227244960241118608885
197809465314272383974874416867271031912614104866893442587344579292454012
955941943291725923504426365240012122269940429183474102774916276764977846
....
--
bart
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-24 19:54 -0500
Re: Multi-channel rand() "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-24 19:38 -0800
Re: Multi-channel rand() nobody@example.org (Scott) - 2018-12-25 04:05 +0000
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-24 23:57 -0500
Re: Multi-channel rand() Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2018-12-25 09:22 +0000
Professional coders??? (Was: Multi-channel rand()) gazelle@shell.xmission.com (Kenny McCormack) - 2018-12-25 10:09 +0000
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-25 07:59 -0500
Re: Multi-channel rand() Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2018-12-25 21:59 +0000
Re: Multi-channel rand() nobody@example.org (Scott) - 2018-12-26 02:43 +0000
Re: Multi-channel rand() rbowman <bowman@montana.com> - 2018-12-25 10:15 -0700
Re: Multi-channel rand() Keith Thompson <kst-u@mib.org> - 2018-12-25 10:14 -0800
Re: Multi-channel rand() Anton Shepelev <anton.txt@g{oogle}mail.com> - 2018-12-25 13:35 +0300
Re: Multi-channel rand() fir <profesor.fir@gmail.com> - 2018-12-25 02:56 -0800
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-25 08:02 -0500
Re: Multi-channel rand() Bart <bc@freeuk.com> - 2018-12-25 11:52 +0000
Re: Multi-channel rand() Anton Shepelev <anton.txt@g{oogle}mail.com> - 2018-12-25 14:58 +0300
Re: Multi-channel rand() Richard Damon <Richard@Damon-Family.org> - 2018-12-25 06:59 -0500
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-25 08:05 -0500
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-25 08:04 -0500
Re: Multi-channel rand() Bart <bc@freeuk.com> - 2018-12-26 15:48 +0000
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-26 07:58 -0800
Re: Multi-channel rand() Richard Damon <Richard@Damon-Family.org> - 2018-12-26 12:06 -0500
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-26 12:45 -0500
Re: Multi-channel rand() Richard Damon <Richard@Damon-Family.org> - 2018-12-26 13:20 -0500
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-26 10:30 -0800
Re: Multi-channel rand() "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-26 11:35 -0800
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-26 14:52 -0500
Re: Multi-channel rand() Richard Damon <Richard@Damon-Family.org> - 2018-12-26 16:31 -0500
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-26 22:28 -0500
Re: Multi-channel rand() "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-30 20:42 -0800
Re: Multi-channel rand() Keith Thompson <kst-u@mib.org> - 2018-12-26 15:32 -0800
Re: Multi-channel rand() Bart <bc@freeuk.com> - 2018-12-26 19:38 +0000
Re: Multi-channel rand() Keith Thompson <kst-u@mib.org> - 2018-12-26 15:35 -0800
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-26 12:59 -0500
Re: Multi-channel rand() Richard Damon <Richard@Damon-Family.org> - 2018-12-26 16:05 -0500
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-26 13:08 -0500
Re: Multi-channel rand() Richard Damon <Richard@Damon-Family.org> - 2018-12-26 15:50 -0500
Re: Multi-channel rand() Bart <bc@freeuk.com> - 2018-12-26 17:42 +0000
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-26 12:48 -0500
Re: Multi-channel rand() Richard Damon <Richard@Damon-Family.org> - 2018-12-26 12:58 -0500
Re: Multi-channel rand() Bart <bc@freeuk.com> - 2018-12-26 19:03 +0000
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-26 14:45 -0500
Re: Multi-channel rand() Bart <bc@freeuk.com> - 2018-12-26 20:46 +0000
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-26 16:25 -0500
Re: Multi-channel rand() Richard Damon <Richard@Damon-Family.org> - 2018-12-26 17:13 -0500
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-26 22:23 -0500
Re: Multi-channel rand() Bart <bc@freeuk.com> - 2018-12-26 23:39 +0000
Re: Multi-channel rand() Richard Damon <Richard@Damon-Family.org> - 2018-12-26 17:36 -0500
Re: Multi-channel rand() Richard Damon <Richard@Damon-Family.org> - 2018-12-26 16:27 -0500
Re: Multi-channel rand() rbowman <bowman@montana.com> - 2018-12-26 19:19 -0700
Re: Multi-channel rand() Richard Damon <Richard@Damon-Family.org> - 2018-12-26 22:17 -0500
Re: Multi-channel rand() James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-26 19:32 -0800
Re: Multi-channel rand() Keith Thompson <kst-u@mib.org> - 2018-12-26 19:34 -0800
Re: Multi-channel rand() Bart <bc@freeuk.com> - 2018-12-27 11:29 +0000
Re: Multi-channel rand() James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-27 05:27 -0800
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-27 09:41 -0500
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-27 09:42 -0500
Re: Multi-channel rand() James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-27 07:01 -0800
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-27 10:28 -0500
Re: Multi-channel rand() Richard Damon <Richard@Damon-Family.org> - 2018-12-27 10:48 -0500
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-27 11:08 -0500
Re: Multi-channel rand() "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-27 13:49 -0800
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-27 17:18 -0500
Re: Multi-channel rand() "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-29 13:59 -0800
Re: Multi-channel rand() "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-30 14:01 -0800
Re: Multi-channel rand() Bart <bc@freeuk.com> - 2018-12-30 22:07 +0000
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-30 17:20 -0500
Re: Multi-channel rand() Richard Damon <Richard@Damon-Family.org> - 2018-12-27 17:47 -0500
Re: Multi-channel rand() "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-30 20:45 -0800
Re: Multi-channel rand() James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-27 08:22 -0800
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-27 11:40 -0500
Re: Multi-channel rand() James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-27 09:21 -0800
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-27 12:45 -0500
Re: Multi-channel rand() James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-27 10:57 -0800
Re: Multi-channel rand() "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-27 14:35 -0500
Re: Multi-channel rand() Tim Rentsch <txr@alumni.caltech.edu> - 2018-12-28 09:25 -0800
Re: Multi-channel rand() Tim Rentsch <txr@alumni.caltech.edu> - 2018-12-28 09:55 -0800
Re: Multi-channel rand() Keith Thompson <kst-u@mib.org> - 2018-12-28 12:36 -0800
Re: Multi-channel rand() Robert Wessel <robertwessel2@yahoo.com> - 2018-12-27 20:34 -0600
Re: Multi-channel rand() Richard Damon <Richard@Damon-Family.org> - 2018-12-27 10:37 -0500
Re: Multi-channel rand() Bart <bc@freeuk.com> - 2018-12-27 14:46 +0000
Re: Multi-channel rand() James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-27 07:05 -0800
Re: Multi-channel rand() Keith Thompson <kst-u@mib.org> - 2018-12-27 11:28 -0800
Re: Multi-channel rand() James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-27 12:07 -0800
Re: Multi-channel rand() Keith Thompson <kst-u@mib.org> - 2018-12-27 12:47 -0800
Re: Multi-channel rand() James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-27 14:47 -0800
Re: Multi-channel rand() "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-26 11:58 -0800
csiph-web