remotion
Version:
Make videos programmatically
41 lines (40 loc) • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.random = void 0;
function mulberry32(a) {
let t = a + 0x6d2b79f5;
t = Math.imul(t ^ (t >>> 15), t | 1);
t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
}
function hashCode(str) {
let i = 0;
let chr = 0;
let hash = 0;
for (i = 0; i < str.length; i++) {
chr = str.charCodeAt(i);
hash = (hash << 5) - hash + chr;
hash |= 0; // Convert to 32bit integer
}
return hash;
}
/*
* @description A deterministic pseudo-random number generator. Pass in the same seed and get the same pseudorandom number.
* @see [Documentation](https://www.remotion.dev/docs/random)
*/
const random = (seed, dummy) => {
if (dummy !== undefined) {
throw new TypeError('random() takes only one argument');
}
if (seed === null) {
return Math.random();
}
if (typeof seed === 'string') {
return mulberry32(hashCode(seed));
}
if (typeof seed === 'number') {
return mulberry32(seed * 10000000000);
}
throw new Error('random() argument must be a number or a string');
};
exports.random = random;