Shop OBEX P1 Docs P2 Docs Learn Events
Random/LFSR on P2 - Page 48 — Parallax Forums

Random/LFSR on P2

1454648505192

Comments

  • TonyB_TonyB_ Posts: 2,178
    edited 2018-06-29 12:46
    TonyB_ wrote: »
    evanh wrote: »
    I've made a multi-case launching script too. It uses all RAM and creates a lot of smaller files now. I mainly chose this approach because I was wary of many programs concurrently trying to append the same files.
    	// read pair array and increment freq values
    	irng = 0;
    	do {
    		ifreq = pairs[irng++];
    		pfreq[ifreq]++;
    
    		// zero-run freq values
    		if( ifreq == 0 )  ztally++;
    		else {
    			if( ztally != 0 )  zfreq[ztally]++;
    			zfreq[0]++;
    			ztally = 0;
    		}
    	} while( irng );
    

    There is a small error in the above code. If the last byte of the 4GB pair array is zero, then the last zero run will not be written to the zfreq array. Also, it would better if zfreq[0] held the number of zero runs, i.e. it is incremented whenever zfreq[tally] is incremented. I think the amended code could be:
    	// read pair array and increment freq values
    	irng = 0;
    	do {
    		ifreq = pairs[irng++];
    		pfreq[ifreq]++;
    
    		// zero-run freq values
    		if( ifreq == 0 )  ztally++;
    		else
    		{
    			if( ztally != 0 )
    			{
    				zfreq[ztally]++;
    				zfreq[0]++;
    				ztally = 0;
    			}
    		}
    	} while( irng );
    	if( ztally != 0 )
    	{
    		zfreq[ztally]++;
    		zfreq[0]++;
    	}
    

    Evan, would it be possible for you to run one further test of the pairs/zero runs distribution, with code amended as above? I am interested in xoroshiro32+ [6,2,3] to compare with xoroshiro32++ [6,2,3,9] already done. If you fancy doing two more tests then xoroshiro32+ [14,2,7] could be the other.

    In Melissa's latest Birthday test post she says that xoroshiro+ has the correct number of expected repeated outputs for a small sample size. However, from my own tests, xoroshiro+ does not produce the expected binomial distribution of duplicated outputs (i.e. two successive outputs identical) for a complete iteration.
  • Here are some selected duplicated output results. Three constants imply xoroshiro32+ (with parity trick if +p), four constants imply xoroshiro32++.
    Triple/		Dupl.	Frequency
    Quadruple	Total	0	1	2	3	4	5	6	7	8	9	10
    
    	Ideal	10000	5E2D	5E2D	2F17	0FB2	03ED	00C9	0021	0005	0001	0000	0000
    
     6,2,3		105CF	6207	5730	2F27	1093	0542	015C	0056	0018	0003	0000	0000
     6,2,3,8	0FF57	6493	5803	2C2C	1052	0526	014F	0062	0012	0002	0001	0000
     6,2,3,9	10008	5E66	5DC6	2F24	0FD7	03EF	00CA	0019	0007	0000	0000	0000
    
     6,2,11		0FFFB	4353	82ED	3121	07C4	00C7	0014	0000	0000	0000	0000	0000
     6,2,11,6	0FF28	5E35	5E96	2ECE	0FB3	03D4	00BA	001F	0007	0000	0000	0000
     6,2,11,8	0FEE5	63AF	596D	2BE2	106D	04E7	015C	0040	000C	0005	0001	0000
    
    14,2,7		0FFA8	50F9	6E2D	3343	0B9D	01C7	0030	0003	0000	0000	0000	0000
    14,2,7+p	0FFE5	5582	67E4	32B6	0D55	023F	0048	0007	0000	0000	0000	0000
    14,2,7,5	0FF39	5E7F	5DD8	2F72	0F64	03FD	00AE	0021	0007	0000	0000	0000
    14,2,7,6	100A9	5E6E	5DD1	2EE4	0FAE	041D	00E3	0026	0009	0000	0000	0000
    14,2,7,8	0FF96	65A9	56C8	2BAF	10A9	0546	0173	005B	001D	0005	0001	0000
    
  • evanhevanh Posts: 15,862
    edited 2018-06-30 06:37
    Hi Tony,
    Hang fire just a bit. I'm not long into having another hack at this scoring business again. I slept on it for a few weeks before deciding that Chris isn't around any more and deciding I needed to find another way to make PractRand more dependable ... and think I've got it sus'd now.

    I've added a check after each PractRand exit to extract the total number of FAILed tests and how many were also due to BCFN tests. If all the fails are due to BCFN tests then that whole case is run over again but setting PractRand's starting length at double the prior fail length, aka score. If it was the correct score then this will double the score, but otherwise the case will continue until the correct length. This seems to reliably push any glitched score up to its correct length.

    I'm doing a full s16 run just now. And will be looking out for secondary glitches to see if maybe the checks need to go further.

  • evanhevanh Posts: 15,862
    edited 2018-06-30 07:18
    [deleted] some stats. Because I realised that very few of the possible cases were actually tested.

  • evanhevanh Posts: 15,862
    edited 2018-06-30 10:53
    TonyB_ wrote: »
    Evan, would it be possible for you to run one further test of the pairs/zero runs distribution, with code amended as above? I am interested in xoroshiro32+ [6,2,3] to compare with xoroshiro32++ [6,2,3,9] already done. If you fancy doing two more tests then xoroshiro32+ [14,2,7] could be the other.
    Right, I've modified the code to do original single summing as well. Here's those two candidates.

  • TonyB_TonyB_ Posts: 2,178
    edited 2018-07-01 00:30
    evanh wrote: »
    TonyB_ wrote: »
    Evan, would it be possible for you to run one further test of the pairs/zero runs distribution, with code amended as above? I am interested in xoroshiro32+ [6,2,3] to compare with xoroshiro32++ [6,2,3,9] already done. If you fancy doing two more tests then xoroshiro32+ [14,2,7] could be the other.
    Right, I've modified the code to do original single summing as well. Here's those two candidates.

    Thanks, Evan. I've had a quick look and the pair distribution for [6,2,3] looks quite good, but its zero distribution looks really bad with far too many non-zero higher frequencies of 22 or more - strange.
  • evanhevanh Posts: 15,862
    Okay, the s16 full culling run is done. Attached is the complete score table and I've put in the log file as well. The good news is the log shows all glitches have been accommodated.

    The bad news is the strong culling has wiped out all the [14 2 7 x] candidates while leaving plenty of others to choose from. This isn't anything to do with the glitches though. It's due to reorienting the scoring solely around byte sampling apertures.

    Here's the short list I'll be targetting from now on:
    __________________________________________________________________________________________________________
    
      Xoroshiro32(16)++ PractRand Score Table.  Build 2018-07-01 02:00:34 +1200
        PractRand v0.93 options:  stdin -multithreaded -te 1 -tf 2 -tlmin 1KB
        Scoring ran from 2018-06-30 17:36:18 to 2018-07-01 02:00:25.  Byte Sampled Double Full Period = 8 GB
    __________________________________________________________________________________________________________
                    Sampling apertures of the generator output, labelled as most to least bit-significance
      Candidate    ----------------------------------------------------------------------------------------
    [ A  B  C  D]  15:00  6:15  5:14  4:13  3:12  2:11  1:10  0:09 15:08 14:07 13:06 12:05 11:04 10:03  9:02  8:01  7:00
    ==========================================================================================================
    [11  3 10  9]   512M  512M    1G    1G  512M    1G    1G  512M  512M  512M  512M    1G  512M  512M    1G    1G    1G
    [13  9  8  8]   512M    1G    1G  512M    1G    1G    1G  512M    1G    1G    1G    1G    1G  512M    1G    1G    1G
    [ 4  8  5  7]   512M    1G    1G    1G  512M  512M  512M  512M  512M  512M  512M  512M    1G    1G    1G  512M    1G
    [ 7  2 10  2]   512M  512M  512M    1G    1G  512M    1G    1G    1G    1G    1G    1G  512M  512M  512M    1G    1G
    [ 7  2 10  7]   512M  512M    1G  512M  512M  512M  512M  512M    1G  512M  512M    1G    1G  512M  512M    1G    1G
    [10  2  7  9]   512M  512M  512M  512M  512M  512M    1G    1G  512M  512M  512M  512M    1G    1G    1G    1G    1G
    [ 6  2  5  5]   512M    1G    1G  512M  512M    1G    1G    1G    1G    1G    1G  512M    1G    1G  512M    1G    1G
    [14  2  9  7]   512M    1G  512M  512M  512M  512M  512M  512M    1G  512M    1G    1G  512M  512M    1G    1G    1G
    [ 2  8  7  5]   512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M    1G
    [14  8  9  9]     1G  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M
    [ 3  2  6  3]   512M    1G  512M    1G    1G    1G    1G  512M  512M  512M  512M    1G  512M  512M    1G    1G    1G
    [ 3  2  6  5]   512M    1G    1G    1G    1G    1G    1G    1G    1G  512M  512M  512M  512M    1G    1G    1G    1G
    [ 3  2  6  6]   512M    2G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G  512M    1G    1G    1G
    [ 3  2  6  9]   512M    2G    2G    1G  512M    1G  512M    1G    1G    2G    1G    2G    1G    2G    1G  512M    1G
    [ 6  2  3  7]   512M  512M    1G    1G    1G    1G    1G    1G    1G  512M  512M  512M    1G    1G    1G    1G    1G
    [ 6  2  3  9]   512M    2G    2G    1G    2G    1G    1G    1G    1G    1G    1G    1G    1G  512M    1G    1G    1G
    [11  2  6  8]   512M  512M    1G    1G  512M    1G    1G    1G  512M  512M  512M    1G    1G  512M  512M  512M    1G
    [ 2 11  3  4]     1G  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M
    [ 6 14 11  9]   512M    1G    1G  512M  512M    1G    1G    1G  512M    1G  512M  512M  512M  512M  512M    1G    1G
    [10  3 11  8]   512M    1G  512M    1G    1G  512M  512M    1G    1G    1G  512M  512M  512M  512M  512M    1G    1G
    [13  5 10 10]     1G  512M  512M  512M  512M  512M  512M  512M  512M    1G  512M  512M    1G    1G    1G  512M  512M
    [13  5 10 12]   512M    1G  512M    1G  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M    1G
    [ 6  2 11  6]   512M    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    2G    1G    1G    2G  512M    1G
    [11  7 10  3]   512M    1G    1G  512M    1G    1G  512M    1G    2G  512M  512M  512M  512M  512M  512M  512M    1G
    
  • TonyB_TonyB_ Posts: 2,178
    edited 2018-07-02 17:02
    [14,2,7,7] qualifies but is missing from the above list. The culling is a bit too strong maybe and you could continue after an 8-bit score of 256M, provided it is not for 7:0 or 15:8 (both of these must be at least 512M and 15:0).

    An important point is that Parallax users will only see xoroshiro32++ as part of XORO32. If they want only the high or low 16 bits, then an extended double interation test for 15:0 would be handy, i.e. missing out every other 16-bit output. If users want only the high or low 8 bits of the 32-bit XORO32 output, then separate extended double iteration tests for 15:8 and 7:0 would be useful.

    For old 8-bit CPUs that can shift or rotate just one bit at a time, xoroshiro32++ [2,8,7,8] is the fastest algorithm with good PractRand scores, although less so for duplicated outputs. xoroshiro32++ [13,9,8,8] requires one more shift/rotate (four, instead of three) but has a slightly better 7:0 score of 1G.
  • evanhevanh Posts: 15,862
    edited 2018-07-01 02:34
    I'm running the selected grid scoring now. Not surprisingly, [3 2 6 9] is still on top.

    [anomaly comments deleted] Made a mistake on the retest. :D

    EDIT: As more of the grids complete ... it looks like this approach is working well. There is notable poor scores for nearly all candidates. [3 2 6 9] is the only flawless exception so far.

  • evanhevanh Posts: 15,862
    Ah, I just realised it wasn't previously [3 2 6 9], but rather we had been historically working with [6 2 3 9]. Unfortunately, the grid for [6 2 3 9] has one dismal 16 MB score at aperture 2>>1. I've checked that score out and it is legit. See attached report.
    __________________________________________________________________________________________________________
      PractRand scoring of Xoroshiro32(16)++ candidate [6 2 3 9].  Byte Sampled Double Full Period = 8 GB
          PractRand v0.93 options:  stdin -multithreaded -te 1 -tf 2 -tlmin 1KB
        |===00====01====02====03====04====05====06====07====08====09====10====11====12====13====14====15=
     16 |  512M  512M  512M  512M  512M  512M  512M    1G  512M  512M  512M  512M  512M  512M  512M  512M
     15 |    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G
     14 |    2G    1G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G
     13 |    4G    4G    2G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    8G    2G
     12 |  512M  512M    1G  512M  512M    1G  512M  512M    1G    1G  512M    1G    1G    1G  512M  512M
     11 |    4G    2G    2G    4G    4G    2G    4G    2G    4G    4G    2G    4G    4G    4G    4G    2G
     10 |    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G
     09 |    4G    4G    2G    4G    2G    4G    4G    4G    4G    4G    8G    4G    4G    4G    4G    4G
     08 |    1G    1G    1G  512M    1G    1G    1G    1G    1G    1G    1G    1G    2G    1G    2G    2G
     07 |    8G    4G    8G    8G    8G    8G    8G    8G    8G    8G    4G    4G    8G    8G    8G    8G
     06 |    2G    2G    2G    4G    4G    2G    2G    8G    1G    4G    4G    4G    2G    2G    4G    2G
     05 |    4G    2G    4G    4G    4G    4G    4G    2G    4G    8G    4G    4G    2G    2G    4G    2G
     04 |  512M    1G    1G  512M    1G  512M  512M  512M  512M  512M  512M  512M    2G    2G    1G    1G
     03 |    2G    4G    4G    4G    4G    4G    2G    4G    4G    4G    4G    2G    4G    4G    2G    2G
     02 |    1G   16M    2G    2G    1G    2G    2G    2G    1G    2G    2G    2G    2G    2G    2G    2G
     01 |  512M    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G
    
  • evanhevanh Posts: 15,862
    TonyB_ wrote: »
    For old 8-bit CPUs that can shift or rotate just one bit at a time, xoroshiro32++ [2,8,7,8] is the fastest algorithm with good PractRand scores, although less so for duplicated outputs. xoroshiro32++ [13,9,8,8] requires one more shift/rotate (four, instead of three) but has a slightly better 7:0 score of 1G.

    [2,8,7,8] isn't garbage but not a great choice either. The 12-bit sampling apertures stand out here. Even sized apertures are always lower scoring but that line is more distinct that usual, like the usual persistently low 16-bit aperture scores.
    __________________________________________________________________________________________________________
      PractRand scoring of Xoroshiro32(16)++ candidate [2 8 7 8].  Byte Sampled Double Full Period = 8 GB
          PractRand v0.93 options:  stdin -multithreaded -te 1 -tf 2 -tlmin 1KB
        |===00====01====02====03====04====05====06====07====08====09====10====11====12====13====14====15=
     16 |  512M  512M  512M  512M  512M  512M  512M  512M  256M  512M  512M  512M  512M  512M  512M  512M
     15 |    2G    2G    2G    2G    2G    2G    4G    4G    4G    4G    4G    4G    4G    4G    2G    4G
     14 |    1G    1G    1G    1G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G    1G
     13 |    1G    1G    1G    1G    1G    1G    2G    1G    1G  512M  512M  512M    1G    2G    2G    1G
     12 |  128M  128M  128M  128M  128M  128M  128M  128M  128M  128M  128M  128M  128M  128M  128M  128M
     11 |  512M  512M  256M  256M  256M  256M  512M  512M  512M    1G  512M  512M  512M  512M  512M  512M
     10 |  512M  128M  256M  256M  256M  256M  256M  256M  512M    2G  512M    1G    1G    1G    1G  256M
     09 |    4G    2G    4G    4G    4G    4G    2G    2G    2G    4G    2G    4G    4G    2G    2G    4G
     08 |  512M  512M  512M  512M    1G    1G    1G    1G    1G    2G    2G    2G    1G    1G    1G    1G
     07 |    2G    8G    4G    2G    4G    8G    2G    1G    1G    1G    1G    2G    4G    8G    8G    4G
     06 |    2G    4G    2G    1G    1G    2G  512M  512M    1G  512M  512M  512M    2G    1G    1G    1G
     05 |    1G    4G    2G    4G  512M    1G    4G  128M  512M  128M  128M  256M    1G    1G    1G    1G
     04 |  256M    1G  512M  512M    2G  128M  256M  256M   64M  256M  128M  128M  128M  512M    1G  256M
     03 |    1G    2G    2G    2G    4G    2G    2G    4G    2G    2G  512M  256M  512M    2G    2G    2G
     02 |    1G  512M    1G    2G    2G    2G    2G    2G    1G    2G  256M  256M  256M  128M    2G    2G
     01 |  256M    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G
    
  • TonyB_TonyB_ Posts: 2,178
    edited 2018-07-01 19:57
    evanh wrote: »
    TonyB_ wrote: »
    For old 8-bit CPUs that can shift or rotate just one bit at a time, xoroshiro32++ [2,8,7,8] is the fastest algorithm with good PractRand scores, although less so for duplicated outputs. xoroshiro32++ [13,9,8,8] requires one more shift/rotate (four, instead of three) but has a slightly better 7:0 score of 1G.

    [2,8,7,8] isn't garbage but not a great choice either. The 12-bit sampling apertures stand out here. Even sized apertures are always lower scoring but that line is more distinct that usual, like the usual persistently low 16-bit aperture scores.
    __________________________________________________________________________________________________________
      PractRand scoring of Xoroshiro32(16)++ candidate [2 8 7 8].  Byte Sampled Double Full Period = 8 GB
          PractRand v0.93 options:  stdin -multithreaded -te 1 -tf 2 -tlmin 1KB
        |===00====01====02====03====04====05====06====07====08====09====10====11====12====13====14====15=
     16 |  512M  512M  512M  512M  512M  512M  512M  512M  256M  512M  512M  512M  512M  512M  512M  512M
     15 |    2G    2G    2G    2G    2G    2G    4G    4G    4G    4G    4G    4G    4G    4G    2G    4G
     14 |    1G    1G    1G    1G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G    1G
     13 |    1G    1G    1G    1G    1G    1G    2G    1G    1G  512M  512M  512M    1G    2G    2G    1G
     12 |  128M  128M  128M  128M  128M  128M  128M  128M  128M  128M  128M  128M  128M  128M  128M  128M
     11 |  512M  512M  256M  256M  256M  256M  512M  512M  512M    1G  512M  512M  512M  512M  512M  512M
     10 |  512M  128M  256M  256M  256M  256M  256M  256M  512M    2G  512M    1G    1G    1G    1G  256M
     09 |    4G    2G    4G    4G    4G    4G    2G    2G    2G    4G    2G    4G    4G    2G    2G    4G
     08 |  512M  512M  512M  512M    1G    1G    1G    1G    1G    2G    2G    2G    1G    1G    1G    1G
     07 |    2G    8G    4G    2G    4G    8G    2G    1G    1G    1G    1G    2G    4G    8G    8G    4G
     06 |    2G    4G    2G    1G    1G    2G  512M  512M    1G  512M  512M  512M    2G    1G    1G    1G
     05 |    1G    4G    2G    4G  512M    1G    4G  128M  512M  128M  128M  256M    1G    1G    1G    1G
     04 |  256M    1G  512M  512M    2G  128M  256M  256M   64M  256M  128M  128M  128M  512M    1G  256M
     03 |    1G    2G    2G    2G    4G    2G    2G    4G    2G    2G  512M  256M  512M    2G    2G    2G
     02 |    1G  512M    1G    2G    2G    2G    2G    2G    1G    2G  256M  256M  256M  128M    2G    2G
     01 |  256M    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G
    

    Anything with d = 8 won't be excellent, but both b = 8 and d = 8 make [2,8,7,8] the fastest option for 8-bit CPUs and the scores aren't terrible. Is [13,9,8,8] any better?
  • evanhevanh Posts: 15,862
    Here's the distribution reports for [3 2 6 9], my top pick at the moment, and [2 8 7 8] above.

    I'm rerunning a bunch of the earlier grids to clean out the occasional doubled score. I'll post [3 2 6 9]'s grid after that.

    [13,9,8,8] was never run before I started over. It'll be a day or so before it comes up in the schedule.
  • TonyB_TonyB_ Posts: 2,178
    edited 2018-07-01 20:17
    The Z80 code for xoroshiro32++ [2,8,7,8] and [13,9,8,8] are the same size and speed.
  • evanhevanh Posts: 15,862
    I interrupted the schedule and pulled [13 9 8 8] to run it separately. Here's its grid and distribution.
    __________________________________________________________________________________________________________
      PractRand scoring of Xoroshiro32(16)++ candidate [13 9 8 8].  Byte Sampled Double Full Period = 8 GB
          PractRand v0.93 options:  stdin -multithreaded -te 1 -tf 2 -tlmin 1KB
        |===00====01====02====03====04====05====06====07====08====09====10====11====12====13====14====15=
     16 |  512M  512M  512M   64M  256M   64M  128M  512M  512M  512M  512M   64M  128M  512M  256M  512M
     15 |  256M  256M  512M  256M  256M  512M  512M  512M  512M  512M    1G    1G    1G    1G  512M  512M
     14 |   64M  128M  128M  128M   64M  128M  256M  128M  128M  256M  256M  256M  256M  256M  256M  128M
     13 |   64M   64M   64M   64M  128M   64M  128M  256M   64M  128M  128M  128M  128M  128M  128M  256M
     12 |   32M   32M   32M   32M   32M   32M   32M   32M   64M   32M   32M   64M   64M   32M   32M   64M
     11 |    2G    1G    1G    1G    1G    1G    2G    2G    1G    2G    2G    1G    1G    1G    1G    2G
     10 |    1G    1G  512M  256M  512M  512M  512M  512M  512M    1G    2G  512M    1G    1G  512M    1G
     09 |    2G    2G    2G    1G    1G    1G    1G    2G    1G    1G    2G    4G    2G    2G    2G    2G
     08 |    1G    1G    1G  512M    1G    1G    1G    1G    1G  512M    1G    1G    1G  512M    1G    1G
     07 |    8G    2G    4G    4G    4G    4G    4G    4G    8G    4G    8G    8G    8G    4G    4G    4G
     06 |    2G    2G    1G    2G    1G    1G    1G    1G    4G    2G    1G    4G    2G    2G    2G    2G
     05 |    4G    2G    4G    4G    2G    4G    2G    2G    4G    4G    4G    4G    4G    4G    4G    4G
     04 |  512M  512M    1G    1G  512M    1G  512M  512M  512M  512M  512M  512M    1G    1G    1G    2G
     03 |    2G    4G    4G    2G    2G    4G    4G    2G    2G    4G    4G    4G    4G    4G    4G    2G
     02 |  512M    1G    2G    2G    1G    2G  256M    1G    2G    1G    2G    2G  512M    2G    1G    2G
     01 |  512M    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G
    
  • evanhevanh Posts: 15,862
    Right, finally got back to [3 2 6 9]'s grid. It's so clean! :)
    __________________________________________________________________________________________________________
      PractRand scoring of Xoroshiro32(16)++ candidate [3 2 6 9].  Byte Sampled Double Full Period = 8 GB
          PractRand v0.93 options:  stdin -multithreaded -te 1 -tf 2 -tlmin 1KB
        |===00====01====02====03====04====05====06====07====08====09====10====11====12====13====14====15=
     16 |  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M    1G
     15 |    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    2G    4G    4G    4G    4G
     14 |    2G    2G    1G    1G    1G    1G    1G    1G    2G    2G    2G    2G    1G    2G    1G    2G
     13 |    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G
     12 |  512M    1G    1G    1G    1G    1G    1G    1G    1G    2G    1G    1G    1G    1G    1G    1G
     11 |    4G    4G    8G    4G    4G    8G    8G    8G    4G    8G    8G    4G    8G    8G    8G    8G
     10 |    1G    1G    2G    4G    4G    2G    8G    8G    4G    4G    8G    4G    8G    4G    4G    2G
     09 |    4G    4G    8G    8G    8G    8G    8G    8G    8G    8G    8G    8G    8G    8G    8G    8G
     08 |    1G  512M    1G    2G    1G    2G    1G    2G    1G    1G  512M    1G  512M    1G    2G    2G
     07 |    4G    4G    8G    8G    8G    8G    8G    2G    4G    8G    4G    2G    2G    4G    4G    8G
     06 |    1G    2G    4G    4G    2G    8G    2G    2G    1G    2G    2G    1G  512M    2G    2G    4G
     05 |    4G    4G    4G    4G    4G    2G    4G    4G    4G    4G    4G    4G    2G    2G    4G    4G
     04 |    1G    1G    1G    1G    1G    1G  512M    1G  512M    1G    1G    2G    4G    2G    1G    2G
     03 |    2G    2G    4G    2G    4G    2G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G
     02 |    1G    1G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G
     01 |    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G
    

    Also, regarding the already chosen [14 2 7 5] candidate, in the Prop2's XORO32 instruction, it still looks comparatively high quality in these grids. Its poorest grid score is a single 128 MB. And the only two 256 MB scores just happened to sit on the auto-culling line. I guess this leans support to reviewing more of the 256 MB culls.

    At this stage, based on these grid scores, I'd place [14 2 7 5] as number two ranking, right behind [3 2 6 9].
    __________________________________________________________________________________________________________
      PractRand scoring of Xoroshiro32(16)++ candidate [14 2 7 5].  Byte Sampled Double Full Period = 8 GB
          PractRand v0.93 options:  stdin -multithreaded -te 1 -tf 2 -tlmin 1KB
        |===00====01====02====03====04====05====06====07====08====09====10====11====12====13====14====15=
     16 |  256M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M
     15 |    4G    2G    8G    8G    4G    4G    4G    2G    4G    4G    4G    8G    4G    8G    4G   16G
     14 |    4G    4G    4G    2G    2G    2G    1G    2G    1G    2G    2G    2G    4G    4G    4G    2G
     13 |    2G    4G    4G    4G    4G    4G    4G    4G    4G    2G    4G    2G    4G    4G    2G    2G
     12 |  512M  512M    1G    1G  512M  512M    1G    1G    1G  512M    1G    1G    1G    1G  512M  512M
     11 |    2G    2G    4G    4G    4G    2G    4G    4G    4G    2G    2G    4G    4G    4G    4G    4G
     10 |    2G    2G    1G    2G    2G    2G    1G    2G    2G    2G    2G    2G    2G    2G    2G    2G
     09 |    2G    4G    4G    4G    4G    8G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G
     08 |    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G  256M  512M    1G    1G    1G    1G
     07 |    8G    2G    4G    4G    4G    4G    8G    8G    8G    8G    4G    4G    4G    8G    8G    4G
     06 |    4G    2G  512M    2G    1G    2G    2G    4G    2G    2G    2G    2G    1G    2G    4G    2G
     05 |    4G    2G    4G    4G    4G    2G    4G    2G    4G    4G    4G    4G    2G    2G    2G    4G
     04 |  128M    1G    2G    1G    1G    2G    1G    2G    2G    1G    1G    2G    1G  512M    1G  512M
     03 |    2G    4G    2G    4G    4G    4G    2G    4G    4G    4G    4G    4G    4G    4G    4G    2G
     02 |    1G    2G    2G    2G    2G    2G    2G    2G    2G    1G    1G    2G    2G    2G  512M  512M
     01 |    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G
    
  • evanhevanh Posts: 15,862
    TonyB_ wrote: »
    [14,2,7,7] qualifies but is missing from the above list. ...
    Not bad. It has quite a lot of 256 MB scores, and one 128 MB, but is generally solid.
    __________________________________________________________________________________________________________
      PractRand scoring of Xoroshiro32(16)++ candidate [14 2 7 7].  Byte Sampled Double Full Period = 8 GB
          PractRand v0.93 options:  stdin -multithreaded -te 1 -tf 2 -tlmin 1KB
        |===00====01====02====03====04====05====06====07====08====09====10====11====12====13====14====15=
     16 |  512M  512M  512M  256M  512M  512M  512M  512M  256M  256M  512M  512M  256M  256M  512M  512M
     15 |    1G  512M  512M    1G  512M    1G    1G    2G    4G    1G  512M    2G  512M  512M  512M  512M
     14 |  512M  512M  512M  512M  512M  256M    1G    1G    1G    2G  256M  256M  512M  256M  256M  256M
     13 |    2G    1G    2G    1G    1G    1G  512M    4G    2G    2G    8G    1G    1G    1G  512M    1G
     12 |    1G    1G    2G    1G    2G    1G    1G  512M    1G  512M    1G    1G  256M    1G  256M  512M
     11 |    2G    4G    2G    4G    2G    2G    4G    4G   16G    4G    4G    4G    2G    4G    4G    4G
     10 |    1G    1G    1G    1G    2G    1G    2G    2G    1G    4G    2G    2G    1G    1G    2G    2G
     09 |    2G    2G    4G    4G    2G    4G    4G    4G    4G    4G    4G    2G    4G    4G    4G    4G
     08 |  512M  512M  512M    1G  512M  512M  512M    1G    1G  512M  512M    1G    1G    1G    1G    1G
     07 |    2G    4G    2G    2G    4G    2G    4G    4G    4G    4G    4G    2G    4G    8G    8G    4G
     06 |    2G    2G    2G    4G    2G    2G    2G    4G    4G    8G    4G  512M  512M    4G    2G    2G
     05 |    1G    1G    4G    4G    4G    4G    4G    2G    4G    4G    4G    4G  256M    4G    4G    2G
     04 |    1G  128M  512M    2G    1G    1G    1G    2G  256M  512M  256M  512M  512M  256M    1G    2G
     03 |    2G    4G    4G    4G    4G    4G    2G    2G    4G    2G    2G    2G    4G    4G    4G    2G
     02 |  256M    2G    2G    2G    2G    1G    2G    1G    2G    2G    2G    2G    2G    2G    2G    2G
     01 |  512M    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G
    

    And here's the revised [14 2 7 6], the original chosen candidate, as well. As seems to be the case over and over, it's virtually identical scoring to [14 2 7 5]. Slightly worse this time.
    __________________________________________________________________________________________________________
      PractRand scoring of Xoroshiro32(16)++ candidate [14 2 7 6].  Byte Sampled Double Full Period = 8 GB
          PractRand v0.93 options:  stdin -multithreaded -te 1 -tf 2 -tlmin 1KB
        |===00====01====02====03====04====05====06====07====08====09====10====11====12====13====14====15=
     16 |  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M
     15 |    8G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    8G   16G    4G
     14 |    2G    2G    2G    2G    2G    2G    1G    2G    1G    1G    2G    2G    1G    2G    4G    4G
     13 |    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    8G
     12 |  512M  512M  512M  512M  512M  512M    1G    1G    1G    1G    1G  512M  512M    1G  512M  512M
     11 |    2G    2G    4G    4G    4G    2G    4G    4G    4G    4G    4G    4G    4G    4G    4G    2G
     10 |    1G    1G    2G    2G    2G    2G    2G    2G    2G    2G    2G    1G    2G    2G    2G    2G
     09 |    4G    2G    2G    4G    4G    8G    8G    8G    4G    8G    4G    8G    2G    8G    8G    4G
     08 |  512M  512M  512M  512M    2G  256M  256M    1G    2G    1G    1G    1G    1G    2G    1G  512M
     07 |    4G    2G    2G    4G    4G    4G    2G    2G    8G    8G    4G    4G    4G    4G    4G    4G
     06 |    4G    4G    1G    2G    2G    4G    2G  512M    1G    2G    2G    2G    2G    2G    2G    2G
     05 |    1G    2G    2G    4G    4G    2G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G
     04 |    1G  512M  512M    2G  512M  256M  128M    1G  512M    1G    1G    1G    1G    4G    1G  256M
     03 |    2G    4G    2G    4G    4G    4G    4G    4G    2G    4G    4G    4G    4G    4G    4G    2G
     02 |  512M    2G    2G    2G    2G    1G  128M    2G    2G    1G    2G    2G    2G    2G    2G  128M
     01 |    1G    1G    1G    1G    1G    1G  512M    1G    1G    1G    1G    1G    1G    1G    1G    1G
    
  • TonyB_TonyB_ Posts: 2,178
    edited 2018-07-02 11:21
    Thanks for the latest scores, Evan.

    I think you cull anything < 1G for [7:0] except for [7:0] = 512M and [15:0] = 1G, but this omits several candidates for which [7:0] = [15:0] = 512M.

    [2,8,7,8] seems to be better than [13,9,8,8].

    [3,2,6,x] and [6,2,3,x] have weight or degree = 15, close to theoretically-best 32/2.

    EDIT:
    Correct mistakes in last line.
  • evanhevanh Posts: 15,862
    Opps, [3 2 6 5] is very strong too. It bottoms out at four 256 MB scores. That should place it in second spot above [14 2 7 5] due to not having any 128 MB scores. Although it is littered with about ten more 512 MB scores. Maybe second equal. :)
    __________________________________________________________________________________________________________
      PractRand scoring of Xoroshiro32(16)++ candidate [3 2 6 5].  Byte Sampled Double Full Period = 8 GB
          PractRand v0.93 options:  stdin -multithreaded -te 1 -tf 2 -tlmin 1KB
        |===00====01====02====03====04====05====06====07====08====09====10====11====12====13====14====15=
     16 |  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M
     15 |    4G    2G    4G    2G    4G    4G    4G    4G    4G    4G    4G    4G    4G    8G    4G    4G
     14 |    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G    2G    1G    2G    2G    2G    2G
     13 |    2G    2G    4G    4G    4G    4G    2G    4G    4G    2G    4G    4G    2G    4G    4G    2G
     12 |  512M  512M  512M  256M  512M  512M  512M    1G    1G    1G    1G  512M    1G    1G    1G  256M
     11 |    2G    1G    1G    2G    4G    4G    2G    2G    2G    2G    2G    4G    4G    4G    4G    4G
     10 |    1G    1G    1G    1G    1G  512M  512M    1G    2G    1G    1G    2G    2G    2G    2G    2G
     09 |    4G    8G    8G    4G    4G    4G    2G    1G    8G    2G    2G    2G    8G    8G    8G    8G
     08 |    1G    1G    1G    1G  512M  512M  512M  512M    1G    1G    1G    1G    1G    1G    1G    1G
     07 |    4G    8G    4G    4G    4G    4G    2G    8G    8G    4G    4G    8G    8G    8G    4G    4G
     06 |    2G    2G    2G    1G    1G    1G    1G    2G    2G    4G    1G    2G    1G    4G    4G    2G
     05 |    4G    4G    4G    4G    4G    4G    2G    4G    4G    2G    4G    2G    2G    4G    4G    4G
     04 |  512M  512M    1G    1G    1G    1G    1G  512M    1G  512M  512M    1G    1G  512M  512M    4G
     03 |    2G    2G    4G    2G    2G    4G  256M    2G    2G    4G    4G    4G    4G    4G    2G    4G
     02 |  512M    2G    2G    2G    2G    1G    2G    2G    2G    2G    2G    2G    2G    1G    1G    1G
     01 |    1G    1G    1G    1G    1G    1G  512M    1G    1G    1G    1G    1G    1G  256M    1G    1G
    
  • TonyB_TonyB_ Posts: 2,178
    edited 2018-07-08 10:30
    Link to this post:
    http://forums.parallax.com/discussion/comment/1441593/#Comment_1441593

    Pair frequency distributions for selected xoroshiro32+[a,b,c], xoroshiro32+p[a,b,c] and xoroshiro32++[a,b,c,d] candidates.
    N.B. The pair distributions are identical to the XORO32 distributions, but ordering of data is different

    Pair frequency
    Actual and Expected
    # a,  b,  c,  d,     pfreq0,     pfreq1,     pfreq2,     pfreq3,     pfreq4,     pfreq5,     pfreq6,     pfreq7,     pfreq8,     pfreq9,    pfreq10,    pfreq11,    pfreq12,   pfreq13+
      2,  8,  7,  7, 1583795293, 1576118213,  788303105,  264007084,   66594053,   13485012,    2285090,     331739,      42330,       4829,        498,         46,          4,          0
      2,  8,  7,  8, 1516031247, 1646635275,  820534809,  250109006,   52506391,    8097375,     957060,      88946,       6738,        434,         12,          3,          0,          0
      3,  2,  6,  5, 1579577465, 1580498553,  790225125,  263257382,   65739315,   13130405,    2185011,     310559,      38760,       4247,        439,         32,          2,          1
      3,  2,  6,  9, 1578177966, 1581892430,  790911930,  263055326,   65442410,   12998176,    2145567,     301689,      37396,       3986,        382,         37,          0,          1
      4,  8,  5,  7, 1576841361, 1583236337,  791576493,  262817687,   65180312,   12868597,    2109778,     296511,      35979,       3859,        340,         34,          8,          0
      5,  2,  6,  8, 1684114040, 1478680984,  739490622,  275465410,   85622835,   23644549,    6035394,    1462707,     345632,      80388,      18987,       4406,        999,        278
      5,  2,  6,  9, 1577721906, 1582349741,  791150818,  262958600,   65352861,   12958311,    2134177,     299778,      36801,       3862,        406,         35,          0,          0
      6,  2,  3,  +, 1670768286, 1463217006,  783718533,  274949290,   78549060,   18599213,    4142680,     815173,     170080,      30965,       5907,        881,        215,          7
      6,  2,  3,  8, 1672312349, 1489051675,  745884572,  274951457,   83539212,   22244872,    5407873,    1231711,     270360,      57625,      12192,       2705,        546,        120
      6,  2,  3,  9, 1580730460, 1579315044,  789689377,  263452640,   65972304,   13231825,    2212851,     317581,      40351,       4412,        419,         27,          5,          0
      6,  2,  5,  5, 1575042981, 1585043481,  792485373,  262496631,   64792687,   12712339,    2069227,     285792,      34652,       3752,        351,         28,          2,          0
      6,  2,  5,  9, 1579058325, 1580974428,  790537395,  263175214,   65631824,   13074729,    2164441,     307823,      38449,       4228,        402,         33,          5,          0
      6,  2, 11,  6, 1579034139, 1581029638,  790511294,  263159759,   65640301,   13076446,    2165616,     307324,      38135,       4177,        421,         41,          5,          0
      7,  8,  2,  7, 1573617569, 1586474964,  793200715,  262239774,   64502678,   12585032,    2031231,     278498,      33093,       3361,        353,         24,          4,          0
      7, 10, 10,  7, 1575544622, 1584543766,  792227121,  262581948,   64901887,   12762257,    2078450,     288557,      34625,       3667,        353,         38,          5,          0
     13,  5, 10, 10, 1578197932, 1581868518,  790926518,  263020052,   65466146,   12999358,    2143902,     303205,      37106,       4115,        406,         35,          3,          0
     13,  9,  8,  8, 1611190230, 1547869486,  775960833,  268490862,   71919554,   15903361,    3028571,     513082,      78326,      11235,       1527,        211,         12,          6
     14,  2,  7,  +, 1360520517, 1842746126,  858490998,  200964795,   29117354,    2902521,     212668,      11793,        509,         14,          1,          0,          0,          0
     14,  2,  7, +p, 1419103690, 1764224504,  850000354,  220741984,   36364139,    4160939,     348172,      22317,       1148,         45,          4,          0,          0,          0
     14,  2,  7,  5, 1576661053, 1583423321,  791674049,  262776786,   65121487,   12864448,    2110786,     295138,      35867,       3945,        372,         41,          3,          0
     14,  2,  7,  6, 1579336929, 1580735764,  790348643,  263221421,   65684445,   13109945,    2176642,     310656,      38143,       4228,        446,         32,          1,          1
     14,  2,  9,  7, 1577161012, 1582904930,  791448264,  262850950,   65239449,   12905255,    2118668,     297977,      36512,       3856,        386,         35,          2,          0
     14,  8,  9,  9, 1572914240, 1587191179,  793538019,  262120054,   64352961,   12528305,    2011777,     274327,      32672,       3428,        309,         22,          3,          0
     15,  3,  6,  8, 1553757835, 1606763285,  802915839,  258492072,   60335389,   10900617,    1588163,     192328,      19854,       1778,        130,          5,          1,          0
    #expected, , , , 1580030169, 1580030169,  790015084,  263338361,   65834590,   13166918,    2194486,     313498,      39187,       4354,        435,         40,          3,          0
    

    Pair frequency
    |Actual-Expected|/Expected
    # a,  b,  c,  d,     pfreq0,     pfreq1,     pfreq2,     pfreq3,     pfreq4,     pfreq5,     pfreq6,     pfreq7,     pfreq8,     pfreq9,    pfreq10,    pfreq11,    pfreq12
      2,  8,  7,  7, 0.00238294, 0.00247587, 0.00216702, 0.00253940, 0.01153592, 0.02415857, 0.04128711, 0.05818537, 0.08020517, 0.10909508, 0.14482758, 0.15000000, 0.33333333
      2,  8,  7,  8, 0.04050487, 0.04215432, 0.03863182, 0.05023709, 0.20244979, 0.38502123, 0.56387965, 0.71627889, 0.82805522, 0.90032154, 0.97241379, 0.92500000, 1.00000000
      3,  2,  6,  5, 0.00028651, 0.00029643, 0.00026586, 0.00030750, 0.00144718, 0.00277308, 0.00431763, 0.00937486, 0.01089647, 0.02457510, 0.00919540, 0.20000000, 0.33333333
      3,  2,  6,  9, 0.00117225, 0.00117862, 0.00113522, 0.00107479, 0.00595705, 0.01281560, 0.02229178, 0.03766850, 0.04570393, 0.08451998, 0.12183908, 0.07500000, 1.00000000
      4,  8,  5,  7, 0.00201819, 0.00202918, 0.00197642, 0.00197720, 0.00993821, 0.02265685, 0.03860038, 0.05418535, 0.08186388, 0.11368856, 0.21839080, 0.15000000, 1.66666666
      5,  2,  6,  8, 0.06587460, 0.06414382, 0.06395379, 0.04605120, 0.30057519, 0.79575425, 1.75025404, 3.66576182, 7.82006787, 17.4630225, 42.6482758, 109.150000, 332.000000
      5,  2,  6,  9, 0.00146089, 0.00146805, 0.00143761, 0.00144210, 0.00731726, 0.01584326, 0.02748206, 0.04376423, 0.06088753, 0.11299954, 0.06666666, 0.12500000, 1.00000000
      6,  2,  3,  +, 0.05742809, 0.07393096, 0.00797016, 0.04409129, 0.19312750, 0.41257149, 0.88776779, 1.60024944, 3.34021486, 6.11185117, 12.5793103, 21.0250000, 70.6666666
      6,  2,  3,  8, 0.05840532, 0.05758022, 0.05586034, 0.04409952, 0.26892583, 0.68945170, 1.46430052, 2.92892777, 5.89922678, 12.2349563, 27.0275862, 66.6250000, 181.000000
      6,  2,  3,  9, 0.00044321, 0.00045260, 0.00041227, 0.00043396, 0.00209181, 0.00492955, 0.00836870, 0.01302400, 0.02970372, 0.01332108, 0.03678160, 0.32500000, 0.66666666
      6,  2,  5,  5, 0.00315638, 0.00317292, 0.00312688, 0.00319638, 0.01582607, 0.03452432, 0.05707896, 0.08837695, 0.11572715, 0.13826366, 0.19310344, 0.30000000, 0.33333333
      6,  2,  5,  9, 0.00061507, 0.00059762, 0.00066114, 0.00061953, 0.00307993, 0.00700156, 0.01369113, 0.01810218, 0.01883277, 0.02893890, 0.07586206, 0.17500000, 0.66666666
      6,  2, 11,  6, 0.00063038, 0.00063256, 0.00062810, 0.00067822, 0.00295116, 0.00687115, 0.01315570, 0.01969390, 0.02684563, 0.04065227, 0.03218390, 0.02500000, 0.66666666
      7,  8,  2,  7, 0.00405853, 0.00407890, 0.00403236, 0.00417176, 0.02023118, 0.04419302, 0.07439327, 0.11164345, 0.15551075, 0.22806614, 0.18850574, 0.40000000, 0.33333333
      7, 10, 10,  7, 0.00283889, 0.00285665, 0.00279999, 0.00287239, 0.01416737, 0.03073316, 0.05287616, 0.07955712, 0.11641615, 0.15778594, 0.18850574, 0.05000000, 0.66666666
     13,  5, 10, 10, 0.00115962, 0.00116348, 0.00115369, 0.00120874, 0.00559651, 0.01272583, 0.02305050, 0.03283274, 0.05310434, 0.05489205, 0.06666666, 0.12500000, 0.00000000
     13,  9,  8,  8, 0.01972118, 0.02035447, 0.01778985, 0.01956608, 0.09242806, 0.20782714, 0.38008216, 0.63663564, 0.99877510, 1.58038585, 2.51034482, 4.27500000, 3.00000000
     14,  2,  7,  +, 0.13892750, 0.16627274, 0.08667671, 0.23685712, 0.55771952, 0.77955957, 0.90308983, 0.96238253, 0.98701099, 0.99678456, 0.99770114, 1.00000000, 1.00000000
     14,  2,  7, +p, 0.10185025, 0.11657646, 0.07592927, 0.16175530, 0.44764387, 0.68398534, 0.84134234, 0.92881294, 0.97070457, 0.98966467, 0.99080459, 1.00000000, 1.00000000
     14,  2,  7,  5, 0.00213231, 0.00214752, 0.00209991, 0.00213252, 0.01083173, 0.02297196, 0.03814104, 0.05856496, 0.08472197, 0.09393661, 0.14482758, 0.02500000, 0.00000000
     14,  2,  7,  6, 0.00043875, 0.00044657, 0.00042221, 0.00044406, 0.00228064, 0.00432698, 0.00813128, 0.00906544, 0.02664148, 0.02893890, 0.02528735, 0.20000000, 0.66666666
     14,  2,  9,  7, 0.00181588, 0.00181943, 0.00181411, 0.00185089, 0.00903994, 0.01987275, 0.03454932, 0.04950908, 0.06826243, 0.11437758, 0.11264367, 0.12500000, 0.33333333
     14,  8,  9,  9, 0.00450366, 0.00453219, 0.00445932, 0.00462639, 0.02250532, 0.04850132, 0.08325822, 0.12494816, 0.16625411, 0.21267799, 0.28965517, 0.45000000, 0.00000000
     15,  3,  6,  8, 0.01662774, 0.01691937, 0.01632975, 0.01840327, 0.08353057, 0.17212084, 0.27629385, 0.38650964, 0.49335238, 0.59163987, 0.70114942, 0.87500000, 0.66666666
    
    Notes
    pfreq(x) = output pairs that occur x times
    If N-1 = full period (2^32-1 for the above) then:
    (a) Expected pfreq(x) = 1/x! * N/e
    (b) Sum of pfreq(x) = N
    (c) Sum of x * pfreq(x) = N-1
  • TonyB_TonyB_ Posts: 2,178
    edited 2018-07-04 18:31
    [6,2,3,9] might be in second place purely on the PractRand scores, if not for one 16M.
  • evanhevanh Posts: 15,862
    edited 2018-07-02 07:57
    TonyB_ wrote: »
    I think you cull anything < 1G for [7:0] except for [7:0] = 512M and [15:0] = 1G, but this omits several candidates for which [7:0] = [15:0] = 512M.
    Yeah, I've got some of the broader unculled 512 MB candidates lined up in the schedule. When that's all through I'll do another culling run set to 256 MB instead of 512 MB. It'll be a long run!
    [ A  B  C  D]  15:00  6:15  5:14  4:13  3:12  2:11  1:10  0:09 15:08 14:07 13:06 12:05 11:04 10:03  9:02  8:01  7:00
    ==========================================================================================================
    [11 14  6  7]   512M  512M    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G  512M
    [ 6  2  5  7]   512M    1G    1G    1G  512M    1G    1G    1G    1G    1G    2G    1G    1G    1G    1G    1G  512M
    [15  3  6  8]   512M  512M  512M  512M    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G  512M
    [ 2  8  7  8]   512M    1G    1G    1G    1G    2G    2G    2G    1G    1G    1G    1G    1G  512M  512M  512M  512M
    [ 6  2  3  6]   512M    1G    1G    1G    1G  512M    1G    1G    1G    1G    2G    1G    1G    1G  512M  512M  512M
    [ 6  2  3  8]   512M    1G    1G    1G    1G    1G    1G    1G    1G    1G  512M    1G    1G    1G    1G    1G  512M
    [ 5  2  6  8]   512M    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G  512M  512M  512M    1G    1G  512M
    [13  5  8 10]   512M    1G    1G    1G    1G    1G    1G    1G  512M    1G    1G    1G    1G    1G  512M  512M  512M
    

    [3,6,9,x] and [6,3,9,x] have weight or degree = 15, close to theoretically-best 32/2.
    I'm guessing you meant [3 2 6 x] and [6 2 3 x]. :)


    EDIT: Added the table.
  • evanhevanh Posts: 15,862
    Well, inevitably, even after a couple of iterative improvements, my hack was still bound to miss a corner case ... And it has.

    After generating the latest grid for candidate [13 5 10 10], I quickly spotted a suspicious score of 32 KB at aperture 7>>8. And looking through the log I see these two lines:
    BCFN count: 1, tests/engine-xo-s16/a13b5c10/testcase-xo-a13b5c10d10w7p8, PractRand score: 32 KB - Trying larger ...
    Fails: 1, Reverted - tests/engine-xo-s16/a13b5c10/testcase-xo-a13b5c10d10w7p8, PractRand score: 32 KB

    And digging out the specific PractRand report file it is as expected, ending at 32 KB because the revert overwrites whatever report was made from the "trying larger" attempt.

    So, I run up another script that allows specifying all the component parameters for a single candidate, including telling PractRand to continue past normal failures. See attached. The problem reveals itself as being that both 32 KB and 64 KB are basically identical fails. :(
  • TonyB_TonyB_ Posts: 2,178
    edited 2018-07-02 11:45
    evanh wrote: »
    TonyB_ wrote: »
    [3,6,9,x] and [6,3,9,x] have weight or degree = 15, close to theoretically-best 32/2.
    I'm guessing you meant [3 2 6 x] and [6 2 3 x]. :)

    Oops, yes, very late night errors.

    Sample size of 4 is worse than 3 or 5, 8 is worse than 7 or 9 and 16 worse than 15 because FPF test can detect equidistribution and more easily for even sample widths. I think we should give these odd sizes considerable importance when choosing between candidates, especially 15.

    Another thought. The initial seed should not make any difference but as a check have you tried more than one seed when the score is unusually low? The sequences must not overlap, e.g. could use 1 and seed 2^31 iterations later (halfway point). Second seed would vary between candidates.
  • evanhevanh Posts: 15,862
    I got another one, [6 2 11 6], that easily drops into second place behind [3 2 6 9]. I note the distribution for this candidate has already been done.
    __________________________________________________________________________________________________________
      PractRand scoring of Xoroshiro32(16)++ candidate [6 2 11 6].  Byte Sampled Double Full Period = 8 GB
          PractRand v0.93 options:  stdin -multithreaded -te 1 -tf 2 -tlmin 1KB
        |===00====01====02====03====04====05====06====07====08====09====10====11====12====13====14====15=
     16 |  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M  512M
     15 |    4G    8G    4G    8G    8G    8G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G
     14 |    2G    2G    2G    2G    8G    4G    4G    2G    2G    1G    1G    2G    1G    2G    2G    2G
     13 |    4G    4G    4G    8G    8G    2G    2G    4G    4G    2G    4G    4G    4G    4G    4G    4G
     12 |    1G    1G  512M    1G    1G  512M  512M    2G    1G    1G  512M    1G    1G    1G    1G    1G
     11 |    8G    4G    4G    8G    4G    2G    1G    2G    4G    8G    8G    8G    8G    8G    8G    8G
     10 |    4G    2G    2G    2G    4G    2G    2G    2G    4G    4G    4G    4G    8G    2G    4G    4G
     09 |    4G    4G    4G    8G    8G    8G    8G    8G    4G    4G    4G    4G    4G    2G    4G    4G
     08 |    1G  512M    2G    1G    1G    2G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G
     07 |    4G    8G    4G    4G    2G    4G    4G    4G    2G    4G    4G    4G    8G    4G    4G    4G
     06 |    1G    2G    1G    2G    2G    2G    1G    1G    2G    2G    1G    2G    1G    2G    2G    2G
     05 |    2G    4G    2G    2G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G    4G
     04 |  256M  512M  512M  512M  512M  512M  512M    1G    2G  512M    2G    2G    1G    1G  512M  512M
     03 |    2G    4G    2G    4G    4G    2G    2G    4G    4G    2G    2G    4G    4G    4G    4G    2G
     02 |  512M    2G    2G  512M    2G    2G    1G    2G    2G    2G    2G    2G    2G    2G    2G    2G
     01 |    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G    1G
    
  • evanhevanh Posts: 15,862
    TonyB_ wrote: »
    Sample size of 4 is worse than 3 or 5, 8 is worse than 7 or 9 and 16 worse than 15 because FPF test can detect equidistribution and more easily for even sample widths. I think we should give these odd sizes considerable importance when choosing between candidates, especially 15.
    Isn't detection of equidistribution a valid scoring criteria? I was more inclined to ignore higher scoring from the odd-sized sampling apertures.

    Another thought. The initial seed should not make any difference but as a check have you tried more than one seed when the score is unusually low? The sequences must not overlap, e.g. could use 1 and seed 2^31 iterations later (halfway point). Second seed would vary between candidates.
    To get past the BCFN glitches? Or the oddball low scores (mid megabytes) that I've kept?

  • TonyB_TonyB_ Posts: 2,178
    edited 2018-07-02 13:06
    evanh wrote: »
    TonyB_ wrote: »
    Sample size of 4 is worse than 3 or 5, 8 is worse than 7 or 9 and 16 worse than 15 because FPF test can detect equidistribution and more easily for even sample widths. I think we should give these odd sizes considerable importance when choosing between candidates, especially 15.
    Isn't detection of equidistribution a valid scoring criteria? I was more inclined to ignore higher scoring from the odd-sized sampling apertures.

    The higher scores for the odd sizes are due to the fact that the equidistribution is harder to detect because the extended FPF tests seem to work on 4, 8 or 16 bit samples. I think 15-bit scores are a good proxy for what 16-bit would be without FPF, especially now with sixteen different low bits, but disabling FPF leads to far too many high scores.
    evanh wrote: »
    TonyB_ wrote: »
    Another thought. The initial seed should not make any difference but as a check have you tried more than one seed when the score is unusually low? The sequences must not overlap, e.g. could use 1 and seed 2^31 iterations later (halfway point). Second seed would vary between candidates.
    To get past the BCFN glitches? Or the oddball low scores (mid megabytes) that I've kept?

    I was thinking mainly of the FPF failures for [6,2,3,9] at 16M.
  • The Z80 code for [14,8,9,9] is only 13% bigger and slower than for [2,8,7,8] and it would be interesting to see the former's grid scores, when they are ready.
  • evanhevanh Posts: 15,862
    edited 2018-07-02 14:31
    TonyB_ wrote: »
    I think 15-bit scores are a good proxy for what 16-bit would be without FPF, especially now with sixteen different low bits, but disabling FPF leads to far too many high scores.
    Hmm, I don't think that matters for finding best candidate. There is scoring effects on both even and odd sized apertures equally. The fact that there is a step difference between evens and odds is an ignorable constant.

    EDIT: Well, ignorable to the point of maybe a low score for odd sized apertures maybe should be considered poorer than the same low even sized score.

  • evanh wrote: »
    TonyB_ wrote: »
    I think 15-bit scores are a good proxy for what 16-bit would be without FPF, especially now with sixteen different low bits, but disabling FPF leads to far too many high scores.
    Hmm, I don't think that matters for finding best candidate. There is scoring effects on both even and odd sized apertures equally. The fact that there is a step difference between evens and odds is an ignorable constant.

    EDIT: Well, ignorable to the point of maybe a low score for odd sized apertures maybe should be considered poorer than the same low even sized score.

    We should look at the whole grid, even and odd. 15-bit scores might be good tie-breakers.
Sign In or Register to comment.