{"id":13572669,"url":"https://github.com/transitive-bullshit/random","last_synced_at":"2025-04-14T06:48:13.582Z","repository":{"id":32538555,"uuid":"136243250","full_name":"transitive-bullshit/random","owner":"transitive-bullshit","description":"Seedable random number generator supporting many common distributions.","archived":false,"fork":false,"pushed_at":"2025-03-16T09:43:17.000Z","size":781,"stargazers_count":206,"open_issues_count":4,"forks_count":27,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-07T04:01:50.659Z","etag":null,"topics":["normal-distribution","prng","random","random-number-generator","random-numbers"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/transitive-bullshit.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":".github/funding.yml","license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["transitive-bullshit"]}},"created_at":"2018-06-05T22:51:16.000Z","updated_at":"2025-03-27T11:02:59.000Z","dependencies_parsed_at":"2024-06-18T12:53:52.699Z","dependency_job_id":"adc8cd7a-9ba7-4430-9b5a-6c7f9415725d","html_url":"https://github.com/transitive-bullshit/random","commit_stats":{"total_commits":166,"total_committers":4,"mean_commits":41.5,"dds":"0.17469879518072284","last_synced_commit":"bc16d295834ad7f01890ee2392c0a0436633e77f"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transitive-bullshit%2Frandom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transitive-bullshit%2Frandom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transitive-bullshit%2Frandom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transitive-bullshit%2Frandom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/transitive-bullshit","download_url":"https://codeload.github.com/transitive-bullshit/random/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248837276,"owners_count":21169373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["normal-distribution","prng","random","random-number-generator","random-numbers"],"created_at":"2024-08-01T14:01:31.600Z","updated_at":"2025-04-14T06:48:13.558Z","avatar_url":"https://github.com/transitive-bullshit.png","language":"TypeScript","funding_links":["https://github.com/sponsors/transitive-bullshit"],"categories":["TypeScript"],"sub_categories":[],"readme":"# random \u003c!-- omit in toc --\u003e\n\n\u003e Seedable random number generator supporting many common distributions.\n\n[![NPM](https://img.shields.io/npm/v/random.svg)](https://www.npmjs.com/package/random) [![Build Status](https://github.com/transitive-bullshit/random/actions/workflows/main.yml/badge.svg)](https://github.com/transitive-bullshit/random/actions/workflows/main.yml) [![MIT License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://github.com/transitive-bullshit/random/blob/main/license) [![Prettier Code Formatting](https://img.shields.io/badge/code_style-prettier-brightgreen.svg)](https://prettier.io)\n\nWelcome to the most **random** module on npm! 😜\n\n## Highlights \u003c!-- omit in toc --\u003e\n\n- Simple TS API with zero dependencies\n- **Seedable**\n- Plugin support for different pseudo random number generators\n- Includes many common distributions\n  - uniform, normal, poisson, bernoulli, etc\n- Replacement for `seedrandom` which hasn't been updated in over 5 years\n- Supports all modern JS/TS runtimes\n\n## Install \u003c!-- omit in toc --\u003e\n\n```bash\nnpm install random\n```\n\n## Usage \u003c!-- omit in toc --\u003e\n\n```ts\nimport random from 'random'\n\n// quick uniform shortcuts\nrandom.float((min = 0), (max = 1)) // uniform float in [ min, max )\nrandom.int((min = 0), (max = 1)) // uniform integer in [ min, max ]\nrandom.boolean() // true or false\n\n// uniform distribution\nrandom.uniform((min = 0), (max = 1)) // () =\u003e [ min, max )\nrandom.uniformInt((min = 0), (max = 1)) // () =\u003e [ min, max ]\nrandom.uniformBoolean() // () =\u003e [ false, true ]\n\n// normal distribution\nrandom.normal((mu = 0), (sigma = 1))\nrandom.logNormal((mu = 0), (sigma = 1))\n\n// bernoulli distribution\nrandom.bernoulli((p = 0.5))\nrandom.binomial((n = 1), (p = 0.5))\nrandom.geometric((p = 0.5))\n\n// poisson distribution\nrandom.poisson((lambda = 1))\nrandom.exponential((lambda = 1))\n\n// misc distribution\nrandom.irwinHall(n)\nrandom.bates(n)\nrandom.pareto(alpha)\n```\n\nFor convenience, several common uniform samplers are exposed directly:\n\n```ts\nrandom.float() // 0.2149383367670885\nrandom.int(0, 100) // 72\nrandom.boolean() // true\n\n// random array item\nrandom.choice([1, true, 'foo']) // 'foo'\n\n// shuffle arrays\nrandom.shuffle([1, true, 'foo']) // ['foo', 1, true]\n\nconst dist = random.shuffler([1, true, 'foo'])\ndist() // [true, 'foo', 1]\ndist() // ['foo', true, 1]\ndist() // [1, 'foo', true]\n```\n\n**All distribution methods return a thunk** (function with no params), which will return a series of independent, identically distributed random variables from the specified distribution.\n\n```ts\n// create a normal distribution with default params (mu=1 and sigma=0)\nconst normal = random.normal()\nnormal() // 0.4855465422678824\nnormal() // -0.06696771815439678\nnormal() // 0.7350852689834705\n\n// create a poisson distribution with default params (lambda=1)\nconst poisson = random.poisson()\npoisson() // 0\npoisson() // 4\npoisson() // 1\n```\n\nNote that returning a thunk here is more efficient when generating multiple samples from the same distribution.\n\nYou can change the underlying PRNG or its seed as follows:\n\n```ts\n// change the underlying pseudo random number generator seed.\n// by default, Math.random is used as the underlying PRNG, but it is not seedable,\n// so if a seed is given, we use an ARC4 PRNG (the same one used by `seedrandom`).\nrandom.use('my-seed')\n\n// create a new independent random number generator with a different seed\nconst rng = random.clone('my-new-seed')\n\n// create a third independent random number generator using a custom PRNG\nimport seedrandom from 'seedrandom'\nconst rng2 = random.clone(seedrandom('kitty-seed'))\n```\n\nYou can also instantiate a fresh instance of `Random`:\n\n```ts\nimport { Random } from 'random'\n\nconst rng = new Random() // (uses Math.random)\nconst rng2 = new Random('my-seed-string')\nconst rng3 = new Random(() =\u003e {\n  /* custom PRNG */ return Math.random()\n})\n```\n\n## API \u003c!-- omit in toc --\u003e\n\n\u003c!-- Generated by documentation.js. Update this documentation by updating the source code. --\u003e\n\n#### Table of Contents \u003c!-- omit in toc --\u003e\n\n\u003c!-- no toc --\u003e\n\n- [Random](#random)\n  - [rng](#rng)\n  - [clone](#clone)\n  - [use](#use)\n  - [next](#next)\n  - [float](#float)\n  - [int](#int)\n  - [integer](#integer)\n  - [bool](#bool)\n  - [boolean](#boolean)\n  - [choice](#choice)\n  - [uniform](#uniform)\n  - [uniformInt](#uniformint)\n  - [uniformBoolean](#uniformboolean)\n  - [normal](#normal)\n  - [logNormal](#lognormal)\n  - [bernoulli](#bernoulli)\n  - [binomial](#binomial)\n  - [geometric](#geometric)\n  - [poisson](#poisson)\n  - [exponential](#exponential)\n  - [irwinHall](#irwinhall)\n  - [bates](#bates)\n  - [pareto](#pareto)\n  - [weibull](#weibull)\n\n### [Random](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L36-L382)\n\nSeedable random number generator supporting many common distributions.\n\nDefaults to Math.random as its underlying pseudorandom number generator.\n\nType: `function (rng)`\n\n- `rng` **(RNG | [function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function))** Underlying pseudorandom number generator. (optional, default `Math.random`)\n\n---\n\n#### [rng](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L47-L49)\n\nType: `function ()`\n\n---\n\n#### [clone](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L61-L67)\n\n- **See: RNG.clone**\n\nCreates a new `Random` instance, optionally specifying parameters to\nset a new seed.\n\nType: `function (args, seed, opts): Random`\n\n- `args` **...any**\n- `seed` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** Optional seed for new RNG.\n- `opts` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** Optional config for new RNG options.\n\n---\n\n#### [use](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L87-L89)\n\nSets the underlying pseudorandom number generator used via\neither an instance of `seedrandom`, a custom instance of RNG\n(for PRNG plugins), or a string specifying the PRNG to use\nalong with an optional `seed` and `opts` to initialize the\nRNG.\n\nType: `function (args)`\n\n- `args` **...any**\n\nExample:\n\n```javascript\nimport random from 'random'\n\nrandom.use('example_seedrandom_string')\n// or\nrandom.use(seedrandom('kittens'))\n// or\nrandom.use(Math.random)\n```\n\n---\n\n#### [next](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L124-L126)\n\nConvenience wrapper around `this.rng.next()`\n\nReturns a floating point number in \\[0, 1).\n\nType: `function (): number`\n\n---\n\n#### [float](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L138-L140)\n\nSamples a uniform random floating point number, optionally specifying\nlower and upper bounds.\n\nConvence wrapper around `random.uniform()`\n\nType: `function (min, max): number`\n\n- `min` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Lower bound (float, inclusive) (optional, default `0`)\n- `max` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Upper bound (float, exclusive) (optional, default `1`)\n\n---\n\n#### [int](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L152-L154)\n\nSamples a uniform random integer, optionally specifying lower and upper\nbounds.\n\nConvence wrapper around `random.uniformInt()`\n\nType: `function (min, max): number`\n\n- `min` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Lower bound (integer, inclusive) (optional, default `0`)\n- `max` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Upper bound (integer, inclusive) (optional, default `1`)\n\n---\n\n#### [integer](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L168-L170)\n\nSamples a uniform random integer, optionally specifying lower and upper\nbounds.\n\nConvence wrapper around `random.uniformInt()`\n\nType: `function (min, max): number`\n\n- `min` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Lower bound (integer, inclusive) (optional, default `0`)\n- `max` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Upper bound (integer, inclusive) (optional, default `1`)\n\n---\n\n#### [bool](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L181-L183)\n\nSamples a uniform random boolean value.\n\nConvence wrapper around `random.uniformBoolean()`\n\nType: `function (): boolean`\n\n---\n\n#### [boolean](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L192-L194)\n\nSamples a uniform random boolean value.\n\nConvence wrapper around `random.uniformBoolean()`\n\nType: `function (): boolean`\n\n---\n\n#### [choice](https://github.com/transitive-bullshit/random/blob/fcead1d157da7b3551e25b1ba8d4b0787d608f07/src/random.ts#L229)\n\nReturns an item chosen uniformly at random from the given array.\n\nConvence wrapper around `random.uniformInt()`\n\nType: `function choice \u003cT\u003e (array: Array\u003cT\u003e): T | undefined`\n\n- `array` **[Array\u003cT\u003e](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)** Array of items to sample from\n\n---\n\n#### [uniform](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L207-L209)\n\nGenerates a [Continuous uniform distribution](\u003chttps://en.wikipedia.org/wiki/Uniform_distribution_(continuous)\u003e).\n\nType: `function (min, max): function`\n\n- `min` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Lower bound (float, inclusive) (optional, default `0`)\n- `max` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Upper bound (float, exclusive) (optional, default `1`)\n\n---\n\n#### [uniformInt](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L218-L220)\n\nGenerates a [Discrete uniform distribution](https://en.wikipedia.org/wiki/Discrete_uniform_distribution).\n\nType: `function (min, max): function`\n\n- `min` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Lower bound (integer, inclusive) (optional, default `0`)\n- `max` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Upper bound (integer, inclusive) (optional, default `1`)\n\n---\n\n#### [uniformBoolean](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L230-L232)\n\nGenerates a [Discrete uniform distribution](https://en.wikipedia.org/wiki/Discrete_uniform_distribution),\nwith two possible outcomes, `true` or `false`.\n\nThis method is analogous to flipping a coin.\n\nType: `function (): function`\n\n---\n\n#### [normal](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L245-L247)\n\nGenerates a [Normal distribution](https://en.wikipedia.org/wiki/Normal_distribution).\n\nType: `function (mu, sigma): function`\n\n- `mu` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Mean (optional, default `0`)\n- `sigma` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Standard deviation (optional, default `1`)\n\n---\n\n#### [logNormal](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L256-L258)\n\nGenerates a [Log-normal distribution](https://en.wikipedia.org/wiki/Log-normal_distribution).\n\nType: `function (mu, sigma): function`\n\n- `mu` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Mean of underlying normal distribution (optional, default `0`)\n- `sigma` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Standard deviation of underlying normal distribution (optional, default `1`)\n\n---\n\n#### [bernoulli](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L270-L272)\n\nGenerates a [Bernoulli distribution](https://en.wikipedia.org/wiki/Bernoulli_distribution).\n\nType: `function (p): function`\n\n- `p` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Success probability of each trial. (optional, default `0.5`)\n\n---\n\n#### [binomial](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L281-L283)\n\nGenerates a [Binomial distribution](https://en.wikipedia.org/wiki/Binomial_distribution).\n\nType: `function (n, p): function`\n\n- `n` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Number of trials. (optional, default `1`)\n- `p` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Success probability of each trial. (optional, default `0.5`)\n\n---\n\n#### [geometric](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L291-L293)\n\nGenerates a [Geometric distribution](https://en.wikipedia.org/wiki/Geometric_distribution).\n\nType: `function (p): function`\n\n- `p` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Success probability of each trial. (optional, default `0.5`)\n\n---\n\n#### [poisson](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L305-L307)\n\nGenerates a [Poisson distribution](https://en.wikipedia.org/wiki/Poisson_distribution).\n\nType: `function (lambda): function`\n\n- `lambda` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Mean (lambda \u003e 0) (optional, default `1`)\n\n---\n\n#### [exponential](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L315-L317)\n\nGenerates an [Exponential distribution](https://en.wikipedia.org/wiki/Exponential_distribution).\n\nType: `function (lambda): function`\n\n- `lambda` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Inverse mean (lambda \u003e 0) (optional, default `1`)\n\n---\n\n#### [irwinHall](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L329-L331)\n\nGenerates an [Irwin Hall distribution](https://en.wikipedia.org/wiki/Irwin%E2%80%93Hall_distribution).\n\nType: `function (n): function`\n\n- `n` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Number of uniform samples to sum (n \u003e= 0) (optional, default `1`)\n\n---\n\n#### [bates](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L339-L341)\n\nGenerates a [Bates distribution](https://en.wikipedia.org/wiki/Bates_distribution).\n\nType: `function (n): function`\n\n- `n` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Number of uniform samples to average (n \u003e= 1) (optional, default `1`)\n\n---\n\n#### [pareto](https://github.com/transitive-bullshit/random/blob/e11a840a1cfe0f5bd9c43640f9645a0b28f61406/src/random.js#L349-L351)\n\nGenerates a [Pareto distribution](https://en.wikipedia.org/wiki/Pareto_distribution).\n\nType: `function (alpha): function`\n\n- `alpha` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Alpha (optional, default `1`)\n\n---\n\n#### [weibull](https://)\n\nGenerates a [Weibull distribution](https://en.wikipedia.org/wiki/Weibull_distribution).\n\nType: `function (lambda, k): function`\n\n- `lambda` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** lambda, the scale parameter (lambda \u003e 0)\n- `k` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** k, the shape parameter (k \u003e 0)\n\n---\n\n## Todo \u003c!-- omit in toc --\u003e\n\n- Distributions\n\n  - [x] uniform\n  - [x] uniformInt\n  - [x] uniformBoolean\n  - [x] normal\n  - [x] logNormal\n  - [ ] chiSquared\n  - [ ] cauchy\n  - [ ] fischerF\n  - [ ] studentT\n  - [x] bernoulli\n  - [x] binomial\n  - [ ] negativeBinomial\n  - [x] geometric\n  - [x] poisson\n  - [x] exponential\n  - [ ] gamma\n  - [ ] hyperExponential\n  - [x] weibull\n  - [ ] beta\n  - [ ] laplace\n  - [x] irwinHall\n  - [x] bates\n  - [x] pareto\n\n- Generators\n\n  - [x] pluggable prng\n  - [ ] port more prng from boost / seedrandom\n\n## Related \u003c!-- omit in toc --\u003e\n\n- [d3-random](https://github.com/d3/d3-random) - D3's excellent random number generation library.\n- [seedrandom](https://github.com/davidbau/seedrandom) - Seedable pseudo random number generator.\n- [random-int](https://github.com/sindresorhus/random-int) - For the common use case of generating uniform random ints.\n- [random-float](https://github.com/sindresorhus/random-float) - For the common use case of generating uniform random floats.\n- [randombytes](https://github.com/crypto-browserify/randombytes) - Random crypto bytes for Node.js and the browser.\n- [jshash prngs](https://github.com/bryc/code/blob/master/jshash/PRNGs.md)\n\n## Credit \u003c!-- omit in toc --\u003e\n\nThanks go to [Andrew Moss](https://github.com/agmoss) for the TypeScript port and for helping to maintain this package.\n\nShoutout to [Roger Combs](https://github.com/rcombs) for donating the `random` npm package for this project!\n\nLots of inspiration from [d3-random](https://github.com/d3/d3-random) ([@mbostock](https://github.com/mbostock) and [@svanschooten](https://github.com/svanschooten)).\n\nSome distributions and PRNGs are ported from C++ [boost::random](https://www.boost.org/doc/libs/1_66_0/doc/html/boost_random/reference.html#boost_random.reference.distributions).\n\n## License \u003c!-- omit in toc --\u003e\n\nMIT © [Travis Fischer](https://transitivebullsh.it)\n\nSupport my OSS work by \u003ca href=\"https://twitter.com/transitive_bs\"\u003efollowing me on twitter \u003cimg src=\"https://storage.googleapis.com/saasify-assets/twitter-logo.svg\" alt=\"twitter\" height=\"24px\" align=\"center\"\u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftransitive-bullshit%2Frandom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftransitive-bullshit%2Frandom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftransitive-bullshit%2Frandom/lists"}