[{"name":"Quasirandom","comment":" These quasirandom (low-discrepancy) sequences are based on the blogpost\n\"The Unreasonable Effectiveness of Quasirandom Sequences\":\n\n<http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/>\n\n\n# Low-discrepancy sequences\n\n@docs points1D, points2D, points3D, points\n\n\n# Randomized low-discrepancy sequences\n\n@docs points1DGen, points2DGen, points3DGen, pointsGen\n\n\n# Stepping functions\n\n@docs next1D, next2D, next3D, next, nextForDimension\n\n\n# \"Nth point\" functions\n\n@docs nth1D, nth2D, nth3D, nth, nthForDimension\n\n","unions":[],"aliases":[],"values":[{"name":"next","comment":" Given a N-dimensional point, generate another one in the low-discrepancy\nsequence.\n\nGiven enough of these, they will cover the space uniformly.\n\n","type":"List.List Basics.Float -> List.List Basics.Float"},{"name":"next1D","comment":" Given a point in the `[0,1)` interval, generate another one in the\nlow-discrepancy sequence.\n\nGiven enough of these, they will cover the interval uniformly.\n\nNote that if you need to generate these numbers on multiple axes, you should\ninstead use `nextForDimension` and give each axis a different `dimension` value.\n\n","type":"Basics.Float -> Basics.Float"},{"name":"next2D","comment":" Given a point in the `[0,1)^2` space, generate another one in the\nlow-discrepancy sequence.\n\nGiven enough of these, they will cover the space uniformly.\n\n","type":"( Basics.Float, Basics.Float ) -> ( Basics.Float, Basics.Float )"},{"name":"next3D","comment":" Given a point in the `[0,1)^3` space, generate another one in the\nlow-discrepancy sequence.\n\nGiven enough of these, they will cover the space uniformly.\n\n","type":"( Basics.Float, Basics.Float, Basics.Float ) -> ( Basics.Float, Basics.Float, Basics.Float )"},{"name":"nextForDimension","comment":" Given a point component for a given dimension, generate another one in the\nlow-discrepancy sequence.\n\nGiven enough of these, they will cover the space uniformly.\n\nNote that if `d1 /= d2` then `nextForDimension d1 x /= nextForDimension d2 x`.\nThis is a good thing!\n\n","type":"Basics.Int -> Basics.Float -> Basics.Float"},{"name":"nth","comment":" Generate n-th point in the N-dimensional low-discrepancy sequence.\n\nNote that for speed with large `n`s, this uses a multiplicative algorithm\ninstead of an additive one that's used by `points*` and `next*`, resulting in a\nslight loss of precision, and so the sequences generated using `nth*` will\neventually diverge from the sequences generated using the rest of the functions\nin this module.\n\n","type":"{ dimensions : Basics.Int, n : Basics.Int } -> List.List Basics.Float"},{"name":"nth1D","comment":" Generate n-th point in the 1D low-discrepancy sequence.\n\nNote that for speed with large `n`s, this uses a multiplicative algorithm\ninstead of an additive one that's used by `points*` and `next*`, resulting in a\nslight loss of precision, and so the sequences generated using `nth*` will\neventually diverge from the sequences generated using the rest of the functions\nin this module.\n\n","type":"Basics.Int -> Basics.Float"},{"name":"nth2D","comment":" Generate n-th point in the 2D low-discrepancy sequence.\n\nNote that for speed with large `n`s, this uses a multiplicative algorithm\ninstead of an additive one that's used by `points*` and `next*`, resulting in a\nslight loss of precision, and so the sequences generated using `nth*` will\neventually diverge from the sequences generated using the rest of the functions\nin this module.\n\n","type":"Basics.Int -> ( Basics.Float, Basics.Float )"},{"name":"nth3D","comment":" Generate n-th point in the 3D low-discrepancy sequence.\n\nNote that for speed with large `n`s, this uses a multiplicative algorithm\ninstead of an additive one that's used by `points*` and `next*`, resulting in a\nslight loss of precision, and so the sequences generated using `nth*` will\neventually diverge from the sequences generated using the rest of the functions\nin this module.\n\n","type":"Basics.Int -> ( Basics.Float, Basics.Float, Basics.Float )"},{"name":"nthForDimension","comment":" Generate n-th point's component for the n-th dimension in the\nlow-discrepancy sequence.\n\nNote that for speed with large `n`s, this uses a multiplicative algorithm\ninstead of an additive one that's used by `points*` and `next*`, resulting in a\nslight loss of precision, and so the sequences generated using `nth*` will\neventually diverge from the sequences generated using the rest of the functions\nin this module.\n\n","type":"{ dimension : Basics.Int, n : Basics.Int } -> Basics.Float"},{"name":"points","comment":" A generalized way to generate N points in D dimensions (each dimension\nconfined to the `[0,1)` interval).\n\nThe returned data is in shape:\n\n    [ point0, point1, point2, ... ]\n\nWhere each point is structured like\n\n    [ x, y, ... ]\n\nHere's an example:\n\n    points { dimensions = 1, count = 100 }\n    --> [ [x0], [x1], [x2], [x3], [x4], ... ]\n\n    points { dimensions = 2, count = 100 }\n    --> [ [x0, y0], [x1, y1], [x2, y2], [x3, y3], [x4, y4], ... ]\n\netc.\n\nIf you want a randomized sequence, use `pointsGen`.\n\n","type":"{ dimensions : Basics.Int, count : Basics.Int } -> List.List (List.List Basics.Float)"},{"name":"points1D","comment":" Generate a low-discrepancy sequence of N points in the `[0,1)` interval.\n","type":"Basics.Int -> List.List Basics.Float"},{"name":"points1DGen","comment":" Generate a randomized low-discrepancy sequence of N points in the `[0,1)`\ninterval.\n","type":"Basics.Int -> Random.Generator (List.List Basics.Float)"},{"name":"points2D","comment":" Generate a low-discrepancy sequence of N points in the `[0,1)^2` space.\n","type":"Basics.Int -> List.List ( Basics.Float, Basics.Float )"},{"name":"points2DGen","comment":" Generate a randomized low-discrepancy sequence of N points in the `[0,1)^2`\nspace.\n","type":"Basics.Int -> Random.Generator (List.List ( Basics.Float, Basics.Float ))"},{"name":"points3D","comment":" Generate a low-discrepancy sequence of N points in the `[0,1)^3` space.\n","type":"Basics.Int -> List.List ( Basics.Float, Basics.Float, Basics.Float )"},{"name":"points3DGen","comment":" Generate a randomized low-discrepancy sequence of N points in the `[0,1)^3`\nspace.\n","type":"Basics.Int -> Random.Generator (List.List ( Basics.Float, Basics.Float, Basics.Float ))"},{"name":"pointsGen","comment":" A randomized generalized way to generate N points in D dimensions (each\ndimension confined to the `[0,1)` interval).\n\nThe returned data is in shape:\n\n    [ point0, point1, point2, ... ]\n\nWhere each point is structured like\n\n    [ x, y, ... ]\n\ndepending on the number of dimensions. Here's an example from the\nnon-randomized function:\n\n    points { dimensions = 1, count = 100 }\n    --> [ [x0], [x1], [x2], [x3], [x4], ... ]\n\n    points { dimensions = 2, count = 100 }\n    --> [ [x0, y0], [x1, y1], [x2, y2], [x3, y3], [x4, y4], ... ]\n\netc.\n\n","type":"{ dimensions : Basics.Int, count : Basics.Int } -> Random.Generator (List.List (List.List Basics.Float))"}],"binops":[]}]