{"id":20596066,"url":"https://github.com/davidfig/random","last_synced_at":"2025-09-21T11:55:09.043Z","repository":{"id":52108693,"uuid":"62552347","full_name":"davidfig/random","owner":"davidfig","description":"a javascript random number API with seeded support. not cryptographically sound. useful for games","archived":false,"fork":false,"pushed_at":"2022-12-07T01:31:19.000Z","size":212,"stargazers_count":6,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-09T19:41:52.871Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/davidfig.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-04T10:03:24.000Z","updated_at":"2022-01-01T15:19:29.000Z","dependencies_parsed_at":"2023-01-24T12:45:36.013Z","dependency_job_id":null,"html_url":"https://github.com/davidfig/random","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/davidfig/random","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidfig%2Frandom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidfig%2Frandom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidfig%2Frandom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidfig%2Frandom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidfig","download_url":"https://codeload.github.com/davidfig/random/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidfig%2Frandom/sbom","scorecard":{"id":326588,"data":{"date":"2025-08-11","repo":{"name":"github.com/davidfig/random","commit":"c1bf895352c802ce975620fea5f80e0c7405044c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"22 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-cwfw-4gq5-mrqx","Warn: Project is vulnerable to: GHSA-g95f-p29q-9xw4","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-2j2x-2gpw-g8fm","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-jf85-cpcp-j695","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T02:36:52.916Z","repository_id":52108693,"created_at":"2025-08-18T02:36:52.916Z","updated_at":"2025-08-18T02:36:52.916Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276236415,"owners_count":25608052,"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","status":"online","status_checked_at":"2025-09-21T02:00:07.055Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-16T08:15:01.983Z","updated_at":"2025-09-21T11:55:08.997Z","avatar_url":"https://github.com/davidfig.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## yy-random\nyet another javascript random number API with seeded number support\n\n## Code Example\n\n    const Random = require('yy-random')\n\n    // returns a random integer from 0 - 9\n    Random.get(10)\n\n    // returns a random float for 0 - 2\n    Random.get(2, true)\n\n    // changes the generator from Math.random() to a seeded random function\n    Random.seed(100)\n\n    // returns a random integer between 5 - 20 (including 5 and 20)\n    // this will return the same number each time because of the Random.seed(100) call\n    Random.range(5, 20) \n\n## Installation\ninclude yy-random in your project or add to your workflow\n\n    npm i yy-random\n\n## Rationale\nI use lots of random numbers in my game. I created this library to make it easier to generate the perfect number for as many scenarios as possible. The library has almost complete test code coverage.\n\n## API\n```js\n    /**\n     * generates a seeded number\n     * @param {number} seed\n     * @param {object} [options]\n     * @param {string} [PRNG=\"alea\"] - name of algorithm, see https://github.com/davidbau/seedrandom\n     * @param {(boolean|string)} [state] - can include the state returned from save()\n     */\n    seed(seed, options) {\n\n    /**\n     * saves the state of the random generator\n     * can only be used after Random.seed() is called with options.state = true\n     * @returns {number} state\n     */\n    save() {\n\n    /**\n     * restores the state of the random generator\n     * @param {number} state\n     */\n    restore(state) {\n\n    /**\n     * changes the generator to use the old Math.sin-based random function\n     * based on : http://stackoverflow.com/questions/521295/javascript-random-seeds\n     * (deprecated) Use only for compatibility purposes\n     * @param {number} seed\n     */\n    seedOld(seed) {\n\n    /**\n     * create a separate random generator using the seed\n     * @param {number} seed\n     * @return {object}\n     */\n    separateSeed(seed) {\n\n    /**\n     * resets the random number this.generator to Math.random()\n     */\n    reset() {\n\n    /**\n     * returns a random number using the this.generator between [0, ceiling - 1]\n     * @param {number} ceiling\n     * @param {boolean} [useFloat=false]\n     * @return {number}\n     */\n    get(ceiling, useFloat) {\n\n    /**\n     * returns a random integer between 0 - Number.MAX_SAFE_INTEGER\n     * @return {number}\n     */\n    getHuge() {\n\n    /**\n     * random number [middle - range, middle + range]\n     * @param {number} middle\n     * @param {number} delta\n     * @param {boolean} [useFloat=false]\n     * @return {number}\n     */\n    middle(middle, delta, useFloat) {\n\n    /**\n     * random number [start, end]\n     * @param {number} start\n     * @param {number} end\n     * @param {boolean} [useFloat=false] if true, then range is (start, end)--i.e., not inclusive to start and end\n     * @return {number}\n     */\n    range(start, end, useFloat) {\n\n    /**\n     * an array of random numbers between [start, end]\n     * @param {number} start\n     * @param {number} end\n     * @param {number} count\n     * @param {boolean} [useFloat=false]\n     * @return {number[]}\n     */\n    rangeMultiple(start, end, count, useFloat) {\n\n    /**\n     * an array of random numbers between [middle - range, middle + range]\n     * @param {number} middle\n     * @param {number} range\n     * @param {number} count\n     * @param {boolean} [useFloat=false]\n     * @return {number[]}\n     */\n    middleMultiple(middle, range, count, useFloat) {\n\n    /**\n     * @param {number} [chance=0.5]\n     * returns random sign (either +1 or -1)\n     * @return {number}\n     */\n    sign(chance) {\n\n    /**\n     * tells you whether a random chance was achieved\n     * @param {number} [percent=0.5]\n     * @return {boolean}\n     */\n    chance(percent) {\n\n    /**\n     * returns a random angle in radians [0 - 2 * Math.PI)\n     */\n    angle() {\n\n    /**\n     * Shuffle array (either in place or copied)\n     * from http://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array\n     * @param {Array} array\n     * @param {boolean} [copy=false] whether to shuffle in place (default) or return a new shuffled array\n     * @return {Array} a shuffled array\n     */\n    shuffle(array, copy) {\n\n    /**\n     * picks a random element from an array\n     * @param {Array} array\n     * @return {*}\n     */\n    pick(array, remove) {\n\n    /**\n     * select a random collection of elements from an array\n     * @param {Array} array\n     * @param {number} count\n     * @param {Array} array of selected items\n     */\n    select(array, count) {\n\n    /**\n     * returns a random property from an object\n     * from http://stackoverflow.com/questions/2532218/pick-random-property-from-a-javascript-object\n     * @param {object} obj\n     * @return {*}\n     */\n    property(obj) {\n\n    /**\n     * creates a random set where each entry is a value between [min, max]\n     * @param {number} min\n     * @param {number} max\n     * @param {number} amount of numbers in set\n     * @param {number[]}\n     */\n    set(min, max, amount) {\n\n    /**\n     * returns a set of numbers with a randomly even distribution (i.e., no overlapping and filling the space)\n     * @param {number} start position\n     * @param {number} end position\n     * @param {number} count of non-start/end points\n     * @param {boolean} [includeStart=false] includes start point (count++)\n     * @param {boolean} [includeEnd=false] includes end point (count++)\n     * @param {boolean} [useFloat=false]\n     * @param {number[]}\n     */\n    distribution(start, end, count, includeStart, includeEnd, useFloat) {\n\n    /**\n     * returns a random number based on weighted probability between [min, max]\n     * from http://stackoverflow.com/questions/22656126/javascript-random-number-with-weighted-probability\n     * @param {number} min value\n     * @param {number} max value\n     * @param {number} target for average value\n     * @param {number} stddev - standard deviation\n     */\n    weightedProbabilityInt(min, max, target, stddev) {\n\n    /**\n     * returns a random number within a circle with a normal distribution\n     * from https://stackoverflow.com/a/5838055/1955997\n     * @param {number} x\n     * @param {number} y\n     * @param {number} radius\n     * @param {bool} [float]\n     * @returns {number[]} [x, y]\n     */\n    circle(x, y, radius, float) {\n\n```\n## License  \nMIT License  \n(c) 2017 [YOPEY YOPEY LLC](https://yopeyopey.com/) by [David Figatner](https://twitter.com/yopey_yopey/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidfig%2Frandom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidfig%2Frandom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidfig%2Frandom/lists"}