Comments (3)
Your bug definitely seems valid. I'll try to reproduce and fix soon.
from random-js.
I also encounter this problem, below is how I solve it temporarily, but this will break the original shuffle if I directly using myShuffle function as a replacement of the old shuffle
var random = new Random(Random.engines.browserCrypto);
random.myShuffle = function (array, downTo) {
var length = array.length;
if (length) {
if (downTo == null) {
downTo = 0;
}
for (var i = (length - 1) >>> 0; i >= downTo; --i) {
var distribution = Random.integer(0, i);
var j = distribution(this.engine);
if (i !== j) {
var tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
}
return array;
};
random.mySample = function (population, sampleSize) {
if (sampleSize < 0 || sampleSize > population.length || !isFinite(sampleSize)) {
throw new RangeError("Expected sampleSize to be within 0 and the length of the population");
}
if (sampleSize === 0) {
return [];
}
var clone = population.slice();
var length = clone.length;
if (length === sampleSize) {
return this.myShuffle(clone, 0);
}
var tailLength = length - sampleSize;
return this.myShuffle(clone, tailLength).slice(tailLength);
};
from random-js.
Yep, logically, there was an off-by-one error where if you sampled by one, it would shuffle exactly 0 items rather than 1. This applied to sample and not shuffle because shuffle has no point in shuffling the very last item (since it can only shuffle with itself), whereas with sample, it needs to take the next item into account.
from random-js.
Related Issues (20)
- Serialize and unserialize for later use HOT 1
- cannot be imported properly in jest backend HOT 2
- Question: Use It In Games? HOT 5
- Is it possible to seed nativeMath? HOT 1
- Cannot read property 'nativeMath' of undefined (2.0.0-rc2) HOT 1
- 2.0.0-rc2 doesn't build with webpack/babel HOT 1
- Is it good to feed MersenneTwister19937 with array of same integers except one? HOT 2
- TypeError: n(...).Random is not a constructor HOT 6
- MersenneTwister19937 is not defined HOT 1
- Include ".js" in imports HOT 1
- Can't build with webpack HOT 1
- Question: replicating exact functionality of Math.random() HOT 2
- feat: Add support for React Native HOT 7
- Force value to either min or max HOT 3
- Choose "best" engine automatically? HOT 1
- var random = new Random.Random() does not work when random-js is imported as a script HOT 1
- Automatic dependency updates
- Converting the build to GitHub Actions
- Better documentation on how to create custom engines in README.md
- Add documentation on how to use this library without Node.js and/or with Webpack 5+
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from random-js.