Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #139093

Re: Multi-channel rand()

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

Show all headers | View raw


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


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