pgregory.net/rand@v1.0.3-0.20230808192358-a0b8ce02f4da/std_regress_test.go (about)

     1  // Copyright 2014 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE-go file.
     4  
     5  // Test that random number sequences generated by a specific seed
     6  // do not change from version to version.
     7  //
     8  // Do NOT make changes to the golden outputs. If bugs need to be fixed
     9  // in the underlying code, find ways to fix them that do not affect the
    10  // outputs.
    11  
    12  package rand_test
    13  
    14  import (
    15  	"flag"
    16  	"fmt"
    17  	. "pgregory.net/rand"
    18  	"reflect"
    19  	"testing"
    20  )
    21  
    22  var (
    23  	printgolden = flag.Bool("printgolden", false, "print golden results for regression test")
    24  	skipregress = flag.Bool("skipregress", false, "skip the regression test")
    25  )
    26  
    27  func TestRegress(t *testing.T) {
    28  	if *skipregress {
    29  		t.Skip("-skipregress specified")
    30  	}
    31  
    32  	var int32s = []int32{1, 10, 32, 1 << 20, 1<<20 + 1, 1000000000, 1 << 30, 1<<31 - 2, 1<<31 - 1}
    33  	var uint32s = []uint32{1, 10, 32, 1 << 20, 1<<20 + 1, 1000000000, 1 << 30, 1<<31 - 2, 1<<31 - 1, 1<<32 - 2, 1<<32 - 1}
    34  	var int64s = []int64{1, 10, 32, 1 << 20, 1<<20 + 1, 1000000000, 1 << 30, 1<<31 - 2, 1<<31 - 1, 1000000000000000000, 1 << 60, 1<<63 - 2, 1<<63 - 1}
    35  	var uint64s = []uint64{1, 10, 32, 1 << 20, 1<<20 + 1, 1000000000, 1 << 30, 1<<31 - 2, 1<<31 - 1, 1000000000000000000, 1 << 60, 1<<63 - 2, 1<<63 - 1, 1<<64 - 2, 1<<64 - 1}
    36  	var permSizes = []int{0, 1, 5, 8, 9, 10, 16}
    37  	var readBufferSizes = []int{0, 1, 7, 8, 9, 10}
    38  	var shuffleSliceSizes = []int{0, 1, 7, 8, 9, 10, 239}
    39  	r := New(0)
    40  
    41  	rv := reflect.ValueOf(r)
    42  	n := rv.NumMethod()
    43  	p := 0
    44  	if *printgolden {
    45  		fmt.Printf("var regressGolden = []interface{}{\n")
    46  	}
    47  	for i := 0; i < n; i++ {
    48  		m := rv.Type().Method(i)
    49  		mv := rv.Method(i)
    50  		mt := mv.Type()
    51  		if m.Name == "Get" || m.Name == "Seed" || m.Name == "UnmarshalBinary" {
    52  			continue
    53  		}
    54  		for repeat := 0; repeat < 17; repeat++ {
    55  			var args []reflect.Value
    56  			var argstr string
    57  			if m.Name == "Shuffle" {
    58  				n := shuffleSliceSizes[repeat%len(shuffleSliceSizes)]
    59  				x := make([]int, n)
    60  				args = append(args, reflect.ValueOf(n))
    61  				args = append(args, reflect.ValueOf(func(i, j int) {
    62  					x[i], x[j] = x[j], x[i]
    63  				}))
    64  			} else if mt.NumIn() == 1 {
    65  				var x interface{}
    66  				switch mt.In(0).Kind() {
    67  				default:
    68  					t.Fatalf("unexpected argument type for r.%s", m.Name)
    69  
    70  				case reflect.Int:
    71  					if m.Name == "Perm" {
    72  						x = permSizes[repeat%len(permSizes)]
    73  						break
    74  					}
    75  					big := int64s[repeat%len(int64s)]
    76  					if int64(int(big)) != big {
    77  						r.Int63n(big) // what would happen on 64-bit machine, to keep stream in sync
    78  						if *printgolden {
    79  							fmt.Printf("\tskipped, // must run printgolden on 64-bit machine\n")
    80  						}
    81  						p++
    82  						continue
    83  					}
    84  					x = int(big)
    85  
    86  				case reflect.Int32:
    87  					x = int32s[repeat%len(int32s)]
    88  
    89  				case reflect.Uint32:
    90  					x = uint32s[repeat%len(uint32s)]
    91  
    92  				case reflect.Int64:
    93  					x = int64s[repeat%len(int64s)]
    94  
    95  				case reflect.Uint64:
    96  					x = uint64s[repeat%len(uint64s)]
    97  
    98  				case reflect.Slice:
    99  					if m.Name == "Read" {
   100  						n := readBufferSizes[repeat%len(readBufferSizes)]
   101  						x = make([]byte, n)
   102  					}
   103  				}
   104  				argstr = fmt.Sprint(x)
   105  				args = append(args, reflect.ValueOf(x))
   106  			}
   107  
   108  			ret := mv.Call(args)
   109  			if m.Name == "Shuffle" {
   110  				continue // we only run Shuffle for the side effects
   111  			}
   112  			out := ret[0].Interface()
   113  			if m.Name == "Int" || m.Name == "Intn" {
   114  				out = int64(out.(int))
   115  			}
   116  			if m.Name == "Read" {
   117  				out = args[0].Interface().([]byte)
   118  			}
   119  			if *printgolden {
   120  				var val string
   121  				big := int64(1 << 60)
   122  				if int64(int(big)) != big && (m.Name == "Int" || m.Name == "Intn") {
   123  					// 32-bit machine cannot print 64-bit results
   124  					val = "truncated"
   125  				} else if reflect.TypeOf(out).Kind() == reflect.Slice {
   126  					val = fmt.Sprintf("%#v", out)
   127  				} else {
   128  					val = fmt.Sprintf("%T(%v)", out, out)
   129  				}
   130  				fmt.Printf("\t%s, // %s(%s)\n", val, m.Name, argstr)
   131  			} else {
   132  				want := regressGolden[p]
   133  				if m.Name == "Int" {
   134  					want = int64(int(uint(want.(int64)) << 1 >> 1))
   135  				}
   136  				if !reflect.DeepEqual(out, want) {
   137  					t.Errorf("r.%s(%s) = %v, want %v", m.Name, argstr, out, want)
   138  				}
   139  			}
   140  			p++
   141  		}
   142  	}
   143  	if *printgolden {
   144  		fmt.Printf("}\n")
   145  	}
   146  }
   147  
   148  var regressGolden = []interface{}{
   149  	float64(0.22067985252185793), // ExpFloat64()
   150  	float64(1.9687711464165194),  // ExpFloat64()
   151  	float64(0.09365679875798526), // ExpFloat64()
   152  	float64(0.14517501157814602), // ExpFloat64()
   153  	float64(0.49508896017758675), // ExpFloat64()
   154  	float64(0.19460162662744554), // ExpFloat64()
   155  	float64(1.772112345348705),   // ExpFloat64()
   156  	float64(0.6731399041877683),  // ExpFloat64()
   157  	float64(0.9608592383348641),  // ExpFloat64()
   158  	float64(1.6377580380236019),  // ExpFloat64()
   159  	float64(0.746790875739628),   // ExpFloat64()
   160  	float64(0.7046262185514),     // ExpFloat64()
   161  	float64(1.2004224748791037),  // ExpFloat64()
   162  	float64(0.2862998393251507),  // ExpFloat64()
   163  	float64(0.06920911706531854), // ExpFloat64()
   164  	float64(0.8560046295086123),  // ExpFloat64()
   165  	float64(1.022440348964754),   // ExpFloat64()
   166  	float32(0.6771215),           // Float32()
   167  	float32(0.27626145),          // Float32()
   168  	float32(0.8183098),           // Float32()
   169  	float32(0.3243996),           // Float32()
   170  	float32(0.67201096),          // Float32()
   171  	float32(0.4681297),           // Float32()
   172  	float32(0.023567796),         // Float32()
   173  	float32(0.087473094),         // Float32()
   174  	float32(0.0034111738),        // Float32()
   175  	float32(0.65722114),          // Float32()
   176  	float32(0.046393096),         // Float32()
   177  	float32(0.21173078),          // Float32()
   178  	float32(0.47271806),          // Float32()
   179  	float32(0.29274207),          // Float32()
   180  	float32(0.27181208),          // Float32()
   181  	float32(0.6496809),           // Float32()
   182  	float32(0.74196166),          // Float32()
   183  	float64(0.856433858351397),   // Float64()
   184  	float64(0.7891435426818407),  // Float64()
   185  	float64(0.2733668469637417),  // Float64()
   186  	float64(0.09475695109948656), // Float64()
   187  	float64(0.9273195412198052),  // Float64()
   188  	float64(0.4249010634878422),  // Float64()
   189  	float64(0.434481617284035),   // Float64()
   190  	float64(0.24533397715360217), // Float64()
   191  	float64(0.22545626444238742), // Float64()
   192  	float64(0.7962420121491581),  // Float64()
   193  	float64(0.9245530787008205),  // Float64()
   194  	float64(0.8394583155312959),  // Float64()
   195  	float64(0.4300312870817893),  // Float64()
   196  	float64(0.2487366685162612),  // Float64()
   197  	float64(0.4381898278658328),  // Float64()
   198  	float64(0.592397672040487),   // Float64()
   199  	float64(0.14746941299436844), // Float64()
   200  	int64(5754373348782608125),   // Int()
   201  	int64(7748491296369333668),   // Int()
   202  	int64(572057954588715219),    // Int()
   203  	int64(6655530453728205615),   // Int()
   204  	int64(7746168941076259749),   // Int()
   205  	int64(2065021622730388476),   // Int()
   206  	int64(7739025699315706832),   // Int()
   207  	int64(1416132004977955628),   // Int()
   208  	int64(2672183821718751310),   // Int()
   209  	int64(1467583583146080573),   // Int()
   210  	int64(6526556134661863112),   // Int()
   211  	int64(1498962930278429112),   // Int()
   212  	int64(3564578358808135765),   // Int()
   213  	int64(7493566175953169584),   // Int()
   214  	int64(2164480193314143082),   // Int()
   215  	int64(8892254210449407921),   // Int()
   216  	int64(752890949371391472),    // Int()
   217  	int32(1205287211),            // Int31()
   218  	int32(404925465),             // Int31()
   219  	int32(1867989579),            // Int31()
   220  	int32(151674396),             // Int31()
   221  	int32(1265122101),            // Int31()
   222  	int32(408483400),             // Int31()
   223  	int32(1543085239),            // Int31()
   224  	int32(1850147509),            // Int31()
   225  	int32(2102981969),            // Int31()
   226  	int32(1217480144),            // Int31()
   227  	int32(2146262991),            // Int31()
   228  	int32(689039740),             // Int31()
   229  	int32(44876493),              // Int31()
   230  	int32(1190852950),            // Int31()
   231  	int32(1593076892),            // Int31()
   232  	int32(1948965381),            // Int31()
   233  	int32(1582074401),            // Int31()
   234  	int32(0),                     // Int31n(1)
   235  	int32(6),                     // Int31n(10)
   236  	int32(29),                    // Int31n(32)
   237  	int32(171754),                // Int31n(1048576)
   238  	int32(662959),                // Int31n(1048577)
   239  	int32(902730596),             // Int31n(1000000000)
   240  	int32(174711228),             // Int31n(1073741824)
   241  	int32(1236167451),            // Int31n(2147483646)
   242  	int32(1417043963),            // Int31n(2147483647)
   243  	int32(0),                     // Int31n(1)
   244  	int32(8),                     // Int31n(10)
   245  	int32(6),                     // Int31n(32)
   246  	int32(207436),                // Int31n(1048576)
   247  	int32(651393),                // Int31n(1048577)
   248  	int32(848592667),             // Int31n(1000000000)
   249  	int32(508814525),             // Int31n(1073741824)
   250  	int32(1139808083),            // Int31n(2147483646)
   251  	int64(4913831498199109714),   // Int63()
   252  	int64(9107756857070956389),   // Int63()
   253  	int64(1227799260184772992),   // Int63()
   254  	int64(2150828967340353585),   // Int63()
   255  	int64(960667031188823006),    // Int63()
   256  	int64(5125145001232459059),   // Int63()
   257  	int64(4341096159660331390),   // Int63()
   258  	int64(7892524944240304887),   // Int63()
   259  	int64(9003988926428784094),   // Int63()
   260  	int64(1290403754045170150),   // Int63()
   261  	int64(7648611523255928381),   // Int63()
   262  	int64(6895932085076097687),   // Int63()
   263  	int64(8430236826169566034),   // Int63()
   264  	int64(6560226495627602614),   // Int63()
   265  	int64(1031322271605560397),   // Int63()
   266  	int64(3236959108230395884),   // Int63()
   267  	int64(4967355935137401225),   // Int63()
   268  	int64(0),                     // Int63n(1)
   269  	int64(3),                     // Int63n(10)
   270  	int64(7),                     // Int63n(32)
   271  	int64(1009739),               // Int63n(1048576)
   272  	int64(848369),                // Int63n(1048577)
   273  	int64(606497288),             // Int63n(1000000000)
   274  	int64(187638578),             // Int63n(1073741824)
   275  	int64(1183902487),            // Int63n(2147483646)
   276  	int64(1200900157),            // Int63n(2147483647)
   277  	int64(61991983276636305),     // Int63n(1000000000000000000)
   278  	int64(692963167483433090),    // Int63n(1152921504606846976)
   279  	int64(3912258686940198097),   // Int63n(9223372036854775806)
   280  	int64(1177200405359738371),   // Int63n(9223372036854775807)
   281  	int64(0),                     // Int63n(1)
   282  	int64(4),                     // Int63n(10)
   283  	int64(29),                    // Int63n(32)
   284  	int64(337390),                // Int63n(1048576)
   285  	int64(0),                     // Intn(1)
   286  	int64(1),                     // Intn(10)
   287  	int64(5),                     // Intn(32)
   288  	int64(720876),                // Intn(1048576)
   289  	int64(126152),                // Intn(1048577)
   290  	int64(782208792),             // Intn(1000000000)
   291  	int64(1053629115),            // Intn(1073741824)
   292  	int64(1724409739),            // Intn(2147483646)
   293  	int64(102204766),             // Intn(2147483647)
   294  	int64(350818036186644838),    // Intn(1000000000000000000)
   295  	int64(895031574546959106),    // Intn(1152921504606846976)
   296  	int64(2272837822344028440),   // Intn(9223372036854775806)
   297  	int64(9015800786283557131),   // Intn(9223372036854775807)
   298  	int64(0),                     // Intn(1)
   299  	int64(4),                     // Intn(10)
   300  	int64(23),                    // Intn(32)
   301  	int64(213701),                // Intn(1048576)
   302  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   303  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   304  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   305  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   306  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   307  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   308  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   309  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   310  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   311  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   312  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   313  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   314  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   315  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   316  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   317  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   318  	[]byte{0x6c, 0x7e, 0x6c, 0xb7, 0x4f, 0x80, 0x7a, 0xcc, 0x32, 0x5c, 0xcb, 0xa1, 0x53, 0x59, 0xd9, 0xca, 0xe0, 0x2f, 0xce, 0xf0, 0xc9, 0x14, 0xb0, 0xcb, 0x9d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x8a, 0x4c, 0x5e, 0x5, 0xda, 0x2a, 0xf4, 0x0}, // MarshalBinary()
   319  	float64(-0.8654257554398836),                                // NormFloat64()
   320  	float64(-0.21406829968820063),                               // NormFloat64()
   321  	float64(-1.259634794338612),                                 // NormFloat64()
   322  	float64(0.9792767971163675),                                 // NormFloat64()
   323  	float64(1.079517806578937),                                  // NormFloat64()
   324  	float64(-1.7279815182679379),                                // NormFloat64()
   325  	float64(-0.1091512345583307),                                // NormFloat64()
   326  	float64(1.8756598905697905),                                 // NormFloat64()
   327  	float64(0.1152268468912775),                                 // NormFloat64()
   328  	float64(0.4380076443898085),                                 // NormFloat64()
   329  	float64(-0.6122218559579252),                                // NormFloat64()
   330  	float64(2.203114764815355),                                  // NormFloat64()
   331  	float64(-1.007500691429182),                                 // NormFloat64()
   332  	float64(-0.009209736102766444),                              // NormFloat64()
   333  	float64(1.8994576881568932),                                 // NormFloat64()
   334  	float64(2.077433728093697),                                  // NormFloat64()
   335  	float64(0.058706583568411005),                               // NormFloat64()
   336  	[]int{},                                                     // Perm(0)
   337  	[]int{0},                                                    // Perm(1)
   338  	[]int{0, 2, 4, 3, 1},                                        // Perm(5)
   339  	[]int{7, 5, 6, 0, 4, 3, 2, 1},                               // Perm(8)
   340  	[]int{8, 6, 2, 4, 7, 3, 1, 5, 0},                            // Perm(9)
   341  	[]int{9, 4, 7, 2, 8, 6, 3, 1, 5, 0},                         // Perm(10)
   342  	[]int{6, 8, 4, 2, 9, 10, 5, 3, 15, 1, 12, 7, 13, 0, 14, 11}, // Perm(16)
   343  	[]int{},                             // Perm(0)
   344  	[]int{0},                            // Perm(1)
   345  	[]int{2, 1, 3, 0, 4},                // Perm(5)
   346  	[]int{6, 1, 3, 7, 0, 2, 5, 4},       // Perm(8)
   347  	[]int{1, 8, 7, 2, 6, 0, 3, 5, 4},    // Perm(9)
   348  	[]int{0, 5, 4, 8, 3, 6, 9, 7, 1, 2}, // Perm(10)
   349  	[]int{13, 2, 10, 6, 3, 7, 5, 8, 9, 4, 11, 14, 12, 1, 15, 0}, // Perm(16)
   350  	[]int{},              // Perm(0)
   351  	[]int{0},             // Perm(1)
   352  	[]int{2, 4, 1, 0, 3}, // Perm(5)
   353  	[]byte{},             // Read([])
   354  	[]byte{0x94},         // Read([0])
   355  	[]byte{0xd6, 0xea, 0x86, 0xf4, 0x43, 0x15, 0x49},                   // Read([0 0 0 0 0 0 0])
   356  	[]byte{0xde, 0x73, 0x2f, 0x87, 0x13, 0x33, 0x41, 0x5f},             // Read([0 0 0 0 0 0 0 0])
   357  	[]byte{0x94, 0xe4, 0x85, 0x89, 0x88, 0x35, 0xb7, 0x46, 0xe8},       // Read([0 0 0 0 0 0 0 0 0])
   358  	[]byte{0xb5, 0x60, 0xaf, 0x5f, 0xe6, 0x80, 0xe6, 0x3e, 0xdc, 0x38}, // Read([0 0 0 0 0 0 0 0 0 0])
   359  	[]byte{},     // Read([])
   360  	[]byte{0x89}, // Read([0])
   361  	[]byte{0xba, 0xeb, 0xcf, 0xc5, 0xc8, 0x14, 0x3c},                  // Read([0 0 0 0 0 0 0])
   362  	[]byte{0x8c, 0xd9, 0x9f, 0xb3, 0x5c, 0x85, 0x1a, 0x2},             // Read([0 0 0 0 0 0 0 0])
   363  	[]byte{0x1a, 0x84, 0x2e, 0x8, 0xea, 0x1b, 0x6, 0x82, 0xbe},        // Read([0 0 0 0 0 0 0 0 0])
   364  	[]byte{0xd9, 0xf4, 0xd9, 0x58, 0x5, 0xca, 0x22, 0x1b, 0x78, 0x8b}, // Read([0 0 0 0 0 0 0 0 0 0])
   365  	[]byte{},     // Read([])
   366  	[]byte{0xf1}, // Read([0])
   367  	[]byte{0x97, 0x5, 0xdb, 0x7f, 0xf2, 0xd7, 0xf3},              // Read([0 0 0 0 0 0 0])
   368  	[]byte{0x45, 0x2f, 0xf4, 0x1d, 0xb0, 0x29, 0x59, 0x1a},       // Read([0 0 0 0 0 0 0 0])
   369  	[]byte{0x1b, 0x49, 0xcc, 0x93, 0x4a, 0x93, 0x38, 0x4a, 0x88}, // Read([0 0 0 0 0 0 0 0 0])
   370  	uint32(443144931),            // Uint32()
   371  	uint32(2838888050),           // Uint32()
   372  	uint32(540933917),            // Uint32()
   373  	uint32(3532980411),           // Uint32()
   374  	uint32(3879394529),           // Uint32()
   375  	uint32(2263983371),           // Uint32()
   376  	uint32(485587527),            // Uint32()
   377  	uint32(157177437),            // Uint32()
   378  	uint32(1210876971),           // Uint32()
   379  	uint32(1236730850),           // Uint32()
   380  	uint32(1093477689),           // Uint32()
   381  	uint32(3169312281),           // Uint32()
   382  	uint32(3320883706),           // Uint32()
   383  	uint32(2221532646),           // Uint32()
   384  	uint32(3765772079),           // Uint32()
   385  	uint32(1102721479),           // Uint32()
   386  	uint32(443264971),            // Uint32()
   387  	uint32(0),                    // Uint32n(1)
   388  	uint32(6),                    // Uint32n(10)
   389  	uint32(5),                    // Uint32n(32)
   390  	uint32(454419),               // Uint32n(1048576)
   391  	uint32(348174),               // Uint32n(1048577)
   392  	uint32(388944719),            // Uint32n(1000000000)
   393  	uint32(522616556),            // Uint32n(1073741824)
   394  	uint32(1333373448),           // Uint32n(2147483646)
   395  	uint32(1895299264),           // Uint32n(2147483647)
   396  	uint32(2669655105),           // Uint32n(4294967294)
   397  	uint32(2815593974),           // Uint32n(4294967295)
   398  	uint32(0),                    // Uint32n(1)
   399  	uint32(4),                    // Uint32n(10)
   400  	uint32(24),                   // Uint32n(32)
   401  	uint32(542010),               // Uint32n(1048576)
   402  	uint32(907389),               // Uint32n(1048577)
   403  	uint32(549564619),            // Uint32n(1000000000)
   404  	uint64(623435815602436215),   // Uint64()
   405  	uint64(7091866858325530325),  // Uint64()
   406  	uint64(15646221088092807745), // Uint64()
   407  	uint64(7017598857963742454),  // Uint64()
   408  	uint64(18438963929968280692), // Uint64()
   409  	uint64(6664292895603936092),  // Uint64()
   410  	uint64(3934775071970460260),  // Uint64()
   411  	uint64(3277824236972575889),  // Uint64()
   412  	uint64(6836477321205388868),  // Uint64()
   413  	uint64(16094187032350467526), // Uint64()
   414  	uint64(16591668613370222261), // Uint64()
   415  	uint64(11145758340702467251), // Uint64()
   416  	uint64(11306661243905047112), // Uint64()
   417  	uint64(3920891166178067046),  // Uint64()
   418  	uint64(18441123780112909729), // Uint64()
   419  	uint64(11443767348496673295), // Uint64()
   420  	uint64(16268865858039102658), // Uint64()
   421  	uint64(0),                    // Uint64n(1)
   422  	uint64(1),                    // Uint64n(10)
   423  	uint64(23),                   // Uint64n(32)
   424  	uint64(936393),               // Uint64n(1048576)
   425  	uint64(965321),               // Uint64n(1048577)
   426  	uint64(921068474),            // Uint64n(1000000000)
   427  	uint64(551904612),            // Uint64n(1073741824)
   428  	uint64(115775440),            // Uint64n(2147483646)
   429  	uint64(818025944),            // Uint64n(2147483647)
   430  	uint64(15198654419150629),    // Uint64n(1000000000000000000)
   431  	uint64(908755076137728455),   // Uint64n(1152921504606846976)
   432  	uint64(8143090435608784732),  // Uint64n(9223372036854775806)
   433  	uint64(263966714504933425),   // Uint64n(9223372036854775807)
   434  	uint64(10916874489150940206), // Uint64n(18446744073709551614)
   435  	uint64(14331617103672661280), // Uint64n(18446744073709551615)
   436  	uint64(0),                    // Uint64n(1)
   437  	uint64(6),                    // Uint64n(10)
   438  }