{
  "generatedAt": "2026-09-16T20:45:29.388Z",
  "node": "v24.21.0",
  "randomJsSha256": "946e82a3c426d698779d3246c37c732f771db3873c93239ef3952aea39be1e2d",
  "alpha": 0.001,
  "totalDraws": 30930900,
  "seconds": 49,
  "tests": [
    {
      "id": "coin",
      "name": "Two slices (a coin flip)",
      "kind": "uniform",
      "draws": 2000000,
      "df": 1,
      "labels": [
        "Heads",
        "Tails"
      ],
      "observed": [
        1000822,
        999178
      ],
      "expected": [
        1000000,
        1000000
      ],
      "chi2": 1.351,
      "p": 0.245,
      "maxDeviationPct": 0.0822,
      "pass": true
    },
    {
      "id": "die",
      "name": "Six slices (a die)",
      "kind": "uniform",
      "draws": 6000000,
      "df": 5,
      "labels": [
        "1",
        "2",
        "3",
        "4",
        "5",
        "6"
      ],
      "observed": [
        997600,
        1000118,
        1000181,
        999683,
        1000705,
        1001713
      ],
      "expected": [
        1000000,
        1000000,
        1000000,
        1000000,
        1000000,
        1000000
      ],
      "chi2": 9.339,
      "p": 0.0963,
      "maxDeviationPct": 0.24,
      "pass": true
    },
    {
      "id": "twenty",
      "name": "Twenty slices (the largest shareable wheel)",
      "kind": "uniform",
      "draws": 4000000,
      "df": 19,
      "labels": [
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "10",
        "11",
        "12",
        "13",
        "14",
        "15",
        "16",
        "17",
        "18",
        "19",
        "20"
      ],
      "observed": [
        199905,
        199652,
        199351,
        200044,
        199812,
        199803,
        200482,
        199787,
        199689,
        199899,
        199651,
        200227,
        200133,
        200461,
        200540,
        199766,
        200727,
        200216,
        199655,
        200200
      ],
      "expected": [
        200000,
        200000,
        200000,
        200000,
        200000,
        200000,
        200000,
        200000,
        200000,
        200000,
        200000,
        200000,
        200000,
        200000,
        200000,
        200000,
        200000,
        200000,
        200000,
        200000
      ],
      "chi2": 12.481,
      "p": 0.8641,
      "maxDeviationPct": 0.3635,
      "pass": true
    },
    {
      "id": "hundred",
      "name": "One hundred slices",
      "kind": "uniform",
      "draws": 5000000,
      "df": 99,
      "labels": [
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "10",
        "11",
        "12",
        "13",
        "14",
        "15",
        "16",
        "17",
        "18",
        "19",
        "20",
        "21",
        "22",
        "23",
        "24",
        "25",
        "26",
        "27",
        "28",
        "29",
        "30",
        "31",
        "32",
        "33",
        "34",
        "35",
        "36",
        "37",
        "38",
        "39",
        "40",
        "41",
        "42",
        "43",
        "44",
        "45",
        "46",
        "47",
        "48",
        "49",
        "50",
        "51",
        "52",
        "53",
        "54",
        "55",
        "56",
        "57",
        "58",
        "59",
        "60",
        "61",
        "62",
        "63",
        "64",
        "65",
        "66",
        "67",
        "68",
        "69",
        "70",
        "71",
        "72",
        "73",
        "74",
        "75",
        "76",
        "77",
        "78",
        "79",
        "80",
        "81",
        "82",
        "83",
        "84",
        "85",
        "86",
        "87",
        "88",
        "89",
        "90",
        "91",
        "92",
        "93",
        "94",
        "95",
        "96",
        "97",
        "98",
        "99",
        "100"
      ],
      "observed": [
        50271,
        49594,
        49919,
        49805,
        49971,
        49591,
        50301,
        49860,
        49970,
        49664,
        49778,
        49885,
        49639,
        49860,
        50291,
        50084,
        50283,
        50165,
        49623,
        49795,
        50412,
        50349,
        49987,
        50148,
        50440,
        50187,
        50207,
        49925,
        49991,
        50320,
        50269,
        50153,
        50011,
        50040,
        49929,
        49866,
        49785,
        49692,
        49889,
        50077,
        50071,
        49926,
        49882,
        50038,
        50137,
        50216,
        50318,
        49974,
        50101,
        50171,
        49857,
        49986,
        50324,
        49882,
        49803,
        50150,
        50231,
        49609,
        49955,
        49991,
        49870,
        50138,
        50110,
        49902,
        49825,
        49682,
        49813,
        50060,
        50313,
        50109,
        49629,
        50191,
        49884,
        50296,
        49898,
        49826,
        49671,
        49916,
        50151,
        50275,
        49985,
        49955,
        50330,
        49684,
        49867,
        49791,
        49758,
        50145,
        50043,
        49944,
        49972,
        49700,
        49936,
        50192,
        50206,
        50322,
        50298,
        49898,
        50051,
        49716
      ],
      "expected": [
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000,
        50000
      ],
      "chi2": 91.401,
      "p": 0.6939,
      "maxDeviationPct": 0.88,
      "pass": true
    },
    {
      "id": "weighted",
      "name": "Weighted slices *3, *1, *2, *1",
      "kind": "weighted",
      "draws": 3500000,
      "df": 3,
      "labels": [
        "weight 3",
        "weight 1",
        "weight 2",
        "weight 1"
      ],
      "weights": [
        3,
        1,
        2,
        1
      ],
      "observed": [
        1500249,
        499631,
        999156,
        500964
      ],
      "expected": [
        1500000,
        500000,
        1000000,
        500000
      ],
      "chi2": 2.885,
      "p": 0.4098,
      "maxDeviationPct": 0.1928,
      "pass": true
    },
    {
      "id": "pairs",
      "name": "Consecutive results (6 × 6 pairs)",
      "kind": "pairs",
      "draws": 6000000,
      "df": 35,
      "observed": [
        83069,
        83238,
        83533,
        83223,
        83251,
        83527,
        83182,
        83044,
        83430,
        83205,
        83393,
        83624,
        83435,
        83251,
        83151,
        82783,
        83622,
        83796,
        83284,
        83412,
        83898,
        83789,
        83554,
        82931,
        83511,
        82954,
        83685,
        83482,
        82950,
        83192,
        83251,
        83281,
        82876,
        83489,
        83400,
        83304
      ],
      "expected": [
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333,
        83333.33333333333
      ],
      "chi2": 30.341,
      "p": 0.6925,
      "maxDeviationPct": 0.6776,
      "pass": true
    },
    {
      "id": "shuffle",
      "name": "Shuffle of six items (item × position)",
      "kind": "shuffle",
      "draws": 3000000,
      "shuffles": 600000,
      "df": 25,
      "observed": [
        100372,
        99576,
        99900,
        100155,
        99815,
        100182,
        100248,
        100170,
        99746,
        100047,
        99589,
        100200,
        99566,
        99945,
        100235,
        100043,
        100344,
        99867,
        99844,
        99910,
        100197,
        100025,
        100125,
        99899,
        99981,
        100354,
        99813,
        99614,
        100217,
        100021,
        99989,
        100045,
        100109,
        100116,
        99910,
        99831
      ],
      "expected": [
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000
      ],
      "chi2": 16.891,
      "p": 0.8857,
      "maxDeviationPct": 0.434,
      "pass": true
    },
    {
      "id": "rejection",
      "name": "Rejection sampling (modulus 3,000,000,000)",
      "kind": "rejection",
      "draws": 1430900,
      "accepted": 1000000,
      "discarded": 430900,
      "df": 9,
      "observedDiscardRate": 0.30114,
      "theoreticalDiscardRate": 0.30151,
      "observed": [
        99834,
        100085,
        100106,
        100355,
        99932,
        99780,
        99743,
        100158,
        100205,
        99802
      ],
      "expected": [
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000,
        100000
      ],
      "chi2": 3.973,
      "p": 0.9132,
      "maxDeviationPct": 0.355,
      "pass": true
    }
  ]
}
