Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
knuth-shuffle-seeded
Advanced tools
The Fisher-Yates (aka Knuth) shuffle for Node.js, with seeding support
The knuth-shuffle-seeded npm package provides a seeded implementation of the Knuth (or Fisher-Yates) shuffle algorithm. This allows for reproducible shuffling of arrays, which can be useful in scenarios where deterministic results are needed, such as in testing or simulations.
Seeded Shuffle
This feature allows you to shuffle an array in a reproducible manner using a seed. The same seed will always produce the same shuffled array.
const shuffle = require('knuth-shuffle-seeded');
const seed = 'my-seed';
let array = [1, 2, 3, 4, 5];
shuffle(array, seed);
console.log(array);
The seedrandom package provides a seeded random number generator. While it does not directly shuffle arrays, it can be used in conjunction with custom shuffle algorithms to achieve similar functionality. It offers more control over random number generation compared to knuth-shuffle-seeded.
The shuffle-seed package provides a similar functionality to knuth-shuffle-seeded by allowing arrays to be shuffled in a reproducible manner using a seed. It offers a simple API for shuffling and unshuffling arrays based on a seed.
The lodash.shuffle package is part of the Lodash library and provides a method to shuffle arrays. While it does not support seeding, it is widely used and well-documented, making it a popular choice for general-purpose shuffling.
The Fisher-Yates (aka Knuth) shuffle for the browser and Node.js, with seeds support using seed-random.
This project is initially forked from [coolaj86/knuth-shuffle] (https://github.com/coolaj86/knuth-shuffle), but extended so that it is possible to specify a seed to use in the shuffling, to ensure test reproducability.
Demo: https://timothygu.github.io/knuth-shuffle-seeded/
npm install knuth-shuffle-seeded
Then look at example.js.
Put shuffle.js into your js/
. Then look at index.html.
You can also visit the page at http://timothygu.github.io/knuth-shuffle-seeded/.
I have considered that, but the introduction of an npm dependency makes it necessary to use Browserify to generate a browser-compatible JavaScript file, which is too far away from the simple approach of knuth-shuffle.
Copyright 2013 AJ O'Neal Copyright 2015 Tiancheng "Timothy" Gu
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
1.0.3: 2015-01-22
FAQs
The Fisher-Yates (aka Knuth) shuffle for Node.js, with seeding support
We found that knuth-shuffle-seeded demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.