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 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 12package rand_test 13 14import ( 15 "bytes" 16 "flag" 17 "fmt" 18 "go/format" 19 "io" 20 . "math/rand/v2" 21 "os" 22 "reflect" 23 "strings" 24 "testing" 25) 26 27var update = flag.Bool("update", false, "update golden results for regression test") 28 29func TestRegress(t *testing.T) { 30 var int32s = []int32{1, 10, 32, 1 << 20, 1<<20 + 1, 1000000000, 1 << 30, 1<<31 - 2, 1<<31 - 1} 31 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} 32 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} 33 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} 34 var permSizes = []int{0, 1, 5, 8, 9, 10, 16} 35 36 n := reflect.TypeOf(New(NewPCG(1, 2))).NumMethod() 37 p := 0 38 var buf bytes.Buffer 39 if *update { 40 fmt.Fprintf(&buf, "var regressGolden = []any{\n") 41 } 42 for i := 0; i < n; i++ { 43 if *update && i > 0 { 44 fmt.Fprintf(&buf, "\n") 45 } 46 r := New(NewPCG(1, 2)) 47 rv := reflect.ValueOf(r) 48 m := rv.Type().Method(i) 49 mv := rv.Method(i) 50 mt := mv.Type() 51 if mt.NumOut() == 0 { 52 continue 53 } 54 for repeat := 0; repeat < 20; repeat++ { 55 var args []reflect.Value 56 var argstr string 57 if mt.NumIn() == 1 { 58 var x any 59 switch mt.In(0).Kind() { 60 default: 61 t.Fatalf("unexpected argument type for r.%s", m.Name) 62 63 case reflect.Int: 64 if m.Name == "Perm" { 65 x = permSizes[repeat%len(permSizes)] 66 break 67 } 68 big := int64s[repeat%len(int64s)] 69 if int64(int(big)) != big { 70 // On 32-bit machine. 71 // Consume an Int64 like on a 64-bit machine, 72 // to keep the golden data the same on different architectures. 73 r.Int64N(big) 74 if *update { 75 t.Fatalf("must run -update on 64-bit machine") 76 } 77 p++ 78 continue 79 } 80 x = int(big) 81 82 case reflect.Uint: 83 if m.Name == "Uint" { 84 continue 85 } 86 big := uint64s[repeat%len(uint64s)] 87 if uint64(uint(big)) != big { 88 r.Uint64N(big) // what would happen on 64-bit machine, to keep stream in sync 89 if *update { 90 t.Fatalf("must run -update on 64-bit machine") 91 } 92 p++ 93 continue 94 } 95 x = uint(big) 96 97 case reflect.Int32: 98 x = int32s[repeat%len(int32s)] 99 100 case reflect.Int64: 101 x = int64s[repeat%len(int64s)] 102 103 case reflect.Uint32: 104 x = uint32s[repeat%len(uint32s)] 105 106 case reflect.Uint64: 107 x = uint64s[repeat%len(uint64s)] 108 } 109 argstr = fmt.Sprint(x) 110 args = append(args, reflect.ValueOf(x)) 111 } 112 113 var out any 114 out = mv.Call(args)[0].Interface() 115 if m.Name == "Int" || m.Name == "IntN" { 116 out = int64(out.(int)) 117 } 118 if m.Name == "Uint" || m.Name == "UintN" { 119 out = uint64(out.(uint)) 120 } 121 if *update { 122 var val string 123 big := int64(1 << 60) 124 if int64(int(big)) != big && (m.Name == "Int" || m.Name == "IntN" || m.Name == "Uint" || m.Name == "UintN") { 125 // 32-bit machine cannot print 64-bit results 126 val = "truncated" 127 } else if reflect.TypeOf(out).Kind() == reflect.Slice { 128 val = fmt.Sprintf("%#v", out) 129 } else { 130 val = fmt.Sprintf("%T(%v)", out, out) 131 } 132 fmt.Fprintf(&buf, "\t%s, // %s(%s)\n", val, m.Name, argstr) 133 } else if p >= len(regressGolden) { 134 t.Errorf("r.%s(%s) = %v, missing golden value", m.Name, argstr, out) 135 } else { 136 want := regressGolden[p] 137 if m.Name == "Int" { 138 want = int64(int(uint(want.(int64)) << 1 >> 1)) 139 } 140 if m.Name == "Uint" { 141 want = uint64(uint(want.(uint64))) 142 } 143 if !reflect.DeepEqual(out, want) { 144 t.Errorf("r.%s(%s) = %v, want %v", m.Name, argstr, out, want) 145 } 146 } 147 p++ 148 } 149 } 150 if *update { 151 replace(t, "regress_test.go", buf.Bytes()) 152 } 153} 154 155func TestUpdateExample(t *testing.T) { 156 if !*update { 157 t.Skip("-update not given") 158 } 159 160 oldStdout := os.Stdout 161 defer func() { 162 os.Stdout = oldStdout 163 }() 164 165 r, w, err := os.Pipe() 166 if err != nil { 167 t.Fatal(err) 168 } 169 defer r.Close() 170 defer w.Close() 171 172 go func() { 173 os.Stdout = w 174 Example_rand() 175 os.Stdout = oldStdout 176 w.Close() 177 }() 178 out, err := io.ReadAll(r) 179 if err != nil { 180 t.Fatal(err) 181 } 182 183 var buf bytes.Buffer 184 fmt.Fprintf(&buf, "\t// Output:\n") 185 for _, line := range strings.Split(string(out), "\n") { 186 if line != "" { 187 fmt.Fprintf(&buf, "\t// %s\n", line) 188 } 189 } 190 191 replace(t, "example_test.go", buf.Bytes()) 192 193 // Exit so that Example_rand cannot fail. 194 fmt.Printf("UPDATED; ignore non-zero exit status\n") 195 os.Exit(1) 196} 197 198// replace substitutes the definition text from new into the content of file. 199// The text in new is of the form 200// 201// var whatever = T{ 202// ... 203// } 204// 205// Replace searches file for an exact match for the text of the first line, 206// finds the closing brace, and then substitutes new for what used to be in the file. 207// This lets us update the regressGolden table during go test -update. 208func replace(t *testing.T, file string, new []byte) { 209 first, _, _ := bytes.Cut(new, []byte("\n")) 210 first = append(append([]byte("\n"), first...), '\n') 211 data, err := os.ReadFile(file) 212 if err != nil { 213 t.Fatal(err) 214 } 215 i := bytes.Index(data, first) 216 if i < 0 { 217 t.Fatalf("cannot find %q in %s", first, file) 218 } 219 j := bytes.Index(data[i+1:], []byte("\n}\n")) 220 if j < 0 { 221 t.Fatalf("cannot find end in %s", file) 222 } 223 data = append(append(data[:i+1:i+1], new...), data[i+1+j+1:]...) 224 data, err = format.Source(data) 225 if err != nil { 226 t.Fatal(err) 227 } 228 if err := os.WriteFile(file, data, 0666); err != nil { 229 t.Fatal(err) 230 } 231} 232 233var regressGolden = []any{ 234 float64(0.5931317151369719), // ExpFloat64() 235 float64(0.0680034588807843), // ExpFloat64() 236 float64(0.036496967459790364), // ExpFloat64() 237 float64(2.460335459645379), // ExpFloat64() 238 float64(1.5792300208419903), // ExpFloat64() 239 float64(0.9149501499404387), // ExpFloat64() 240 float64(0.43463410545541104), // ExpFloat64() 241 float64(0.5513632046504593), // ExpFloat64() 242 float64(0.7426404617374481), // ExpFloat64() 243 float64(1.2334925132631804), // ExpFloat64() 244 float64(0.892529142200442), // ExpFloat64() 245 float64(0.21508763681487764), // ExpFloat64() 246 float64(1.0208588200798545), // ExpFloat64() 247 float64(0.7650739736831382), // ExpFloat64() 248 float64(0.7772788529257701), // ExpFloat64() 249 float64(1.102732861281323), // ExpFloat64() 250 float64(0.6982243043885805), // ExpFloat64() 251 float64(0.4981788638202421), // ExpFloat64() 252 float64(0.15806532306947937), // ExpFloat64() 253 float64(0.9419163802459202), // ExpFloat64() 254 255 float32(0.95955694), // Float32() 256 float32(0.8076733), // Float32() 257 float32(0.8135684), // Float32() 258 float32(0.92872405), // Float32() 259 float32(0.97472525), // Float32() 260 float32(0.5485458), // Float32() 261 float32(0.97740936), // Float32() 262 float32(0.042272687), // Float32() 263 float32(0.99663067), // Float32() 264 float32(0.035181105), // Float32() 265 float32(0.45059562), // Float32() 266 float32(0.86597633), // Float32() 267 float32(0.8954844), // Float32() 268 float32(0.090798736), // Float32() 269 float32(0.46218646), // Float32() 270 float32(0.5955118), // Float32() 271 float32(0.08985227), // Float32() 272 float32(0.19820237), // Float32() 273 float32(0.7443699), // Float32() 274 float32(0.56461), // Float32() 275 276 float64(0.6764556596678251), // Float64() 277 float64(0.4613862177205994), // Float64() 278 float64(0.5085473976760264), // Float64() 279 float64(0.4297927436037299), // Float64() 280 float64(0.797802349388613), // Float64() 281 float64(0.3883664855410056), // Float64() 282 float64(0.8192750264193612), // Float64() 283 float64(0.3381816951746133), // Float64() 284 float64(0.9730458047755973), // Float64() 285 float64(0.281449117585586), // Float64() 286 float64(0.6047654075331631), // Float64() 287 float64(0.9278107175107462), // Float64() 288 float64(0.16387541502137226), // Float64() 289 float64(0.7263900707339023), // Float64() 290 float64(0.6974917552729882), // Float64() 291 float64(0.7640946923790318), // Float64() 292 float64(0.7188183661358182), // Float64() 293 float64(0.5856191500346635), // Float64() 294 float64(0.9549597149363428), // Float64() 295 float64(0.5168804691962643), // Float64() 296 297 int64(4969059760275911952), // Int() 298 int64(2147869220224756844), // Int() 299 int64(5246770554000605320), // Int() 300 int64(5471241176507662746), // Int() 301 int64(4321634407747778896), // Int() 302 int64(760102831717374652), // Int() 303 int64(9221744211007427193), // Int() 304 int64(8289669384274456462), // Int() 305 int64(2449715415482412441), // Int() 306 int64(3389241988064777392), // Int() 307 int64(2986830195847294191), // Int() 308 int64(8204908297817606218), // Int() 309 int64(8134976985547166651), // Int() 310 int64(2240328155279531677), // Int() 311 int64(7311121042813227358), // Int() 312 int64(5231057920893523323), // Int() 313 int64(4257872588489500903), // Int() 314 int64(158397175702351138), // Int() 315 int64(1350674201389090105), // Int() 316 int64(6093522341581845358), // Int() 317 318 int32(1652216515), // Int32() 319 int32(1323786710), // Int32() 320 int32(1684546306), // Int32() 321 int32(1710678126), // Int32() 322 int32(503104460), // Int32() 323 int32(88487615), // Int32() 324 int32(1073552320), // Int32() 325 int32(965044529), // Int32() 326 int32(285184408), // Int32() 327 int32(394559696), // Int32() 328 int32(1421454622), // Int32() 329 int32(955177040), // Int32() 330 int32(2020777787), // Int32() 331 int32(260808523), // Int32() 332 int32(851126509), // Int32() 333 int32(1682717115), // Int32() 334 int32(1569423431), // Int32() 335 int32(1092181682), // Int32() 336 int32(157239171), // Int32() 337 int32(709379364), // Int32() 338 339 int32(0), // Int32N(1) 340 int32(6), // Int32N(10) 341 int32(8), // Int32N(32) 342 int32(704922), // Int32N(1048576) 343 int32(245656), // Int32N(1048577) 344 int32(41205257), // Int32N(1000000000) 345 int32(43831929), // Int32N(1073741824) 346 int32(965044528), // Int32N(2147483646) 347 int32(285184408), // Int32N(2147483647) 348 int32(0), // Int32N(1) 349 int32(6), // Int32N(10) 350 int32(10), // Int32N(32) 351 int32(283579), // Int32N(1048576) 352 int32(127348), // Int32N(1048577) 353 int32(396336665), // Int32N(1000000000) 354 int32(911873403), // Int32N(1073741824) 355 int32(1569423430), // Int32N(2147483646) 356 int32(1092181681), // Int32N(2147483647) 357 int32(0), // Int32N(1) 358 int32(3), // Int32N(10) 359 360 int64(4969059760275911952), // Int64() 361 int64(2147869220224756844), // Int64() 362 int64(5246770554000605320), // Int64() 363 int64(5471241176507662746), // Int64() 364 int64(4321634407747778896), // Int64() 365 int64(760102831717374652), // Int64() 366 int64(9221744211007427193), // Int64() 367 int64(8289669384274456462), // Int64() 368 int64(2449715415482412441), // Int64() 369 int64(3389241988064777392), // Int64() 370 int64(2986830195847294191), // Int64() 371 int64(8204908297817606218), // Int64() 372 int64(8134976985547166651), // Int64() 373 int64(2240328155279531677), // Int64() 374 int64(7311121042813227358), // Int64() 375 int64(5231057920893523323), // Int64() 376 int64(4257872588489500903), // Int64() 377 int64(158397175702351138), // Int64() 378 int64(1350674201389090105), // Int64() 379 int64(6093522341581845358), // Int64() 380 381 int64(0), // Int64N(1) 382 int64(6), // Int64N(10) 383 int64(8), // Int64N(32) 384 int64(704922), // Int64N(1048576) 385 int64(245656), // Int64N(1048577) 386 int64(41205257), // Int64N(1000000000) 387 int64(43831929), // Int64N(1073741824) 388 int64(965044528), // Int64N(2147483646) 389 int64(285184408), // Int64N(2147483647) 390 int64(183731176326946086), // Int64N(1000000000000000000) 391 int64(680987186633600239), // Int64N(1152921504606846976) 392 int64(4102454148908803108), // Int64N(9223372036854775806) 393 int64(8679174511200971228), // Int64N(9223372036854775807) 394 int64(0), // Int64N(1) 395 int64(3), // Int64N(10) 396 int64(27), // Int64N(32) 397 int64(665831), // Int64N(1048576) 398 int64(533292), // Int64N(1048577) 399 int64(73220195), // Int64N(1000000000) 400 int64(686060398), // Int64N(1073741824) 401 402 int64(0), // IntN(1) 403 int64(6), // IntN(10) 404 int64(8), // IntN(32) 405 int64(704922), // IntN(1048576) 406 int64(245656), // IntN(1048577) 407 int64(41205257), // IntN(1000000000) 408 int64(43831929), // IntN(1073741824) 409 int64(965044528), // IntN(2147483646) 410 int64(285184408), // IntN(2147483647) 411 int64(183731176326946086), // IntN(1000000000000000000) 412 int64(680987186633600239), // IntN(1152921504606846976) 413 int64(4102454148908803108), // IntN(9223372036854775806) 414 int64(8679174511200971228), // IntN(9223372036854775807) 415 int64(0), // IntN(1) 416 int64(3), // IntN(10) 417 int64(27), // IntN(32) 418 int64(665831), // IntN(1048576) 419 int64(533292), // IntN(1048577) 420 int64(73220195), // IntN(1000000000) 421 int64(686060398), // IntN(1073741824) 422 423 float64(0.37944549835531083), // NormFloat64() 424 float64(0.07473804659119399), // NormFloat64() 425 float64(0.20006841200604142), // NormFloat64() 426 float64(-1.1253144115495104), // NormFloat64() 427 float64(-0.4005883316435388), // NormFloat64() 428 float64(-3.0853771402394736), // NormFloat64() 429 float64(1.932330243076978), // NormFloat64() 430 float64(1.726131393719264), // NormFloat64() 431 float64(-0.11707238034168332), // NormFloat64() 432 float64(-0.9303318111676635), // NormFloat64() 433 float64(-0.04750789419852852), // NormFloat64() 434 float64(0.22248301107582735), // NormFloat64() 435 float64(-1.83630520614272), // NormFloat64() 436 float64(0.7259521217919809), // NormFloat64() 437 float64(0.8806882871913041), // NormFloat64() 438 float64(-1.5022903484270484), // NormFloat64() 439 float64(0.5972577266810571), // NormFloat64() 440 float64(1.5631937339973658), // NormFloat64() 441 float64(-0.3841235370075905), // NormFloat64() 442 float64(-0.2967295854430667), // NormFloat64() 443 444 []int{}, // Perm(0) 445 []int{0}, // Perm(1) 446 []int{1, 4, 2, 0, 3}, // Perm(5) 447 []int{4, 3, 6, 1, 5, 2, 7, 0}, // Perm(8) 448 []int{6, 5, 1, 8, 7, 2, 0, 3, 4}, // Perm(9) 449 []int{9, 4, 2, 5, 6, 8, 1, 7, 0, 3}, // Perm(10) 450 []int{5, 9, 3, 1, 4, 2, 10, 7, 15, 11, 0, 14, 13, 8, 6, 12}, // Perm(16) 451 []int{}, // Perm(0) 452 []int{0}, // Perm(1) 453 []int{4, 2, 1, 3, 0}, // Perm(5) 454 []int{0, 2, 3, 1, 5, 4, 6, 7}, // Perm(8) 455 []int{2, 0, 8, 3, 4, 7, 6, 5, 1}, // Perm(9) 456 []int{0, 6, 5, 3, 8, 4, 1, 2, 9, 7}, // Perm(10) 457 []int{9, 14, 4, 11, 13, 8, 0, 6, 2, 12, 3, 7, 1, 10, 5, 15}, // Perm(16) 458 []int{}, // Perm(0) 459 []int{0}, // Perm(1) 460 []int{2, 4, 0, 3, 1}, // Perm(5) 461 []int{3, 2, 1, 0, 7, 5, 4, 6}, // Perm(8) 462 []int{1, 3, 4, 5, 0, 2, 7, 8, 6}, // Perm(9) 463 []int{1, 8, 4, 7, 2, 6, 5, 9, 0, 3}, // Perm(10) 464 465 uint64(14192431797130687760), // Uint() 466 uint64(11371241257079532652), // Uint() 467 uint64(14470142590855381128), // Uint() 468 uint64(14694613213362438554), // Uint() 469 uint64(4321634407747778896), // Uint() 470 uint64(760102831717374652), // Uint() 471 uint64(9221744211007427193), // Uint() 472 uint64(8289669384274456462), // Uint() 473 uint64(2449715415482412441), // Uint() 474 uint64(3389241988064777392), // Uint() 475 uint64(12210202232702069999), // Uint() 476 uint64(8204908297817606218), // Uint() 477 uint64(17358349022401942459), // Uint() 478 uint64(2240328155279531677), // Uint() 479 uint64(7311121042813227358), // Uint() 480 uint64(14454429957748299131), // Uint() 481 uint64(13481244625344276711), // Uint() 482 uint64(9381769212557126946), // Uint() 483 uint64(1350674201389090105), // Uint() 484 uint64(6093522341581845358), // Uint() 485 486 uint32(3304433030), // Uint32() 487 uint32(2647573421), // Uint32() 488 uint32(3369092613), // Uint32() 489 uint32(3421356252), // Uint32() 490 uint32(1006208920), // Uint32() 491 uint32(176975231), // Uint32() 492 uint32(2147104640), // Uint32() 493 uint32(1930089058), // Uint32() 494 uint32(570368816), // Uint32() 495 uint32(789119393), // Uint32() 496 uint32(2842909244), // Uint32() 497 uint32(1910354080), // Uint32() 498 uint32(4041555575), // Uint32() 499 uint32(521617046), // Uint32() 500 uint32(1702253018), // Uint32() 501 uint32(3365434230), // Uint32() 502 uint32(3138846863), // Uint32() 503 uint32(2184363364), // Uint32() 504 uint32(314478343), // Uint32() 505 uint32(1418758728), // Uint32() 506 507 uint32(0), // Uint32N(1) 508 uint32(6), // Uint32N(10) 509 uint32(8), // Uint32N(32) 510 uint32(704922), // Uint32N(1048576) 511 uint32(245656), // Uint32N(1048577) 512 uint32(41205257), // Uint32N(1000000000) 513 uint32(43831929), // Uint32N(1073741824) 514 uint32(965044528), // Uint32N(2147483646) 515 uint32(285184408), // Uint32N(2147483647) 516 uint32(789119393), // Uint32N(4294967294) 517 uint32(2842909244), // Uint32N(4294967295) 518 uint32(0), // Uint32N(1) 519 uint32(9), // Uint32N(10) 520 uint32(29), // Uint32N(32) 521 uint32(266590), // Uint32N(1048576) 522 uint32(821640), // Uint32N(1048577) 523 uint32(730819735), // Uint32N(1000000000) 524 uint32(522841378), // Uint32N(1073741824) 525 uint32(157239171), // Uint32N(2147483646) 526 uint32(709379364), // Uint32N(2147483647) 527 528 uint64(14192431797130687760), // Uint64() 529 uint64(11371241257079532652), // Uint64() 530 uint64(14470142590855381128), // Uint64() 531 uint64(14694613213362438554), // Uint64() 532 uint64(4321634407747778896), // Uint64() 533 uint64(760102831717374652), // Uint64() 534 uint64(9221744211007427193), // Uint64() 535 uint64(8289669384274456462), // Uint64() 536 uint64(2449715415482412441), // Uint64() 537 uint64(3389241988064777392), // Uint64() 538 uint64(12210202232702069999), // Uint64() 539 uint64(8204908297817606218), // Uint64() 540 uint64(17358349022401942459), // Uint64() 541 uint64(2240328155279531677), // Uint64() 542 uint64(7311121042813227358), // Uint64() 543 uint64(14454429957748299131), // Uint64() 544 uint64(13481244625344276711), // Uint64() 545 uint64(9381769212557126946), // Uint64() 546 uint64(1350674201389090105), // Uint64() 547 uint64(6093522341581845358), // Uint64() 548 549 uint64(0), // Uint64N(1) 550 uint64(6), // Uint64N(10) 551 uint64(8), // Uint64N(32) 552 uint64(704922), // Uint64N(1048576) 553 uint64(245656), // Uint64N(1048577) 554 uint64(41205257), // Uint64N(1000000000) 555 uint64(43831929), // Uint64N(1073741824) 556 uint64(965044528), // Uint64N(2147483646) 557 uint64(285184408), // Uint64N(2147483647) 558 uint64(183731176326946086), // Uint64N(1000000000000000000) 559 uint64(680987186633600239), // Uint64N(1152921504606846976) 560 uint64(4102454148908803108), // Uint64N(9223372036854775806) 561 uint64(8679174511200971228), // Uint64N(9223372036854775807) 562 uint64(2240328155279531676), // Uint64N(18446744073709551614) 563 uint64(7311121042813227357), // Uint64N(18446744073709551615) 564 uint64(0), // Uint64N(1) 565 uint64(7), // Uint64N(10) 566 uint64(2), // Uint64N(32) 567 uint64(312633), // Uint64N(1048576) 568 uint64(346376), // Uint64N(1048577) 569 570 uint64(0), // UintN(1) 571 uint64(6), // UintN(10) 572 uint64(8), // UintN(32) 573 uint64(704922), // UintN(1048576) 574 uint64(245656), // UintN(1048577) 575 uint64(41205257), // UintN(1000000000) 576 uint64(43831929), // UintN(1073741824) 577 uint64(965044528), // UintN(2147483646) 578 uint64(285184408), // UintN(2147483647) 579 uint64(183731176326946086), // UintN(1000000000000000000) 580 uint64(680987186633600239), // UintN(1152921504606846976) 581 uint64(4102454148908803108), // UintN(9223372036854775806) 582 uint64(8679174511200971228), // UintN(9223372036854775807) 583 uint64(2240328155279531676), // UintN(18446744073709551614) 584 uint64(7311121042813227357), // UintN(18446744073709551615) 585 uint64(0), // UintN(1) 586 uint64(7), // UintN(10) 587 uint64(2), // UintN(32) 588 uint64(312633), // UintN(1048576) 589 uint64(346376), // UintN(1048577) 590} 591