gpt4 book ai didi

random - 为什么 "(seed * 9301 + 49297) % 233280/233280.0"会生成一个随机数?

转载 作者:行者123 更新时间:2023-12-01 02:04:23 24 4
gpt4 key购买 nike

// Found this seed-based random generator somewhere
// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)

var seed = 1;

/**
* return a random number based on a seed
* @param seed
* @returns {number}
*/
function getNextValue() {
seed = (seed * 9301 + 49297) % 233280;
return seed/(233280.0);
}

function setSeed(_seed_) {
seed = _seed_;
}

module.exports = {
nextValue: getNextValue,
seed: setSeed
};


https://github.com/dylang/shortid/blob/master/lib/random/random-from-seed.js

最佳答案

Why does (seed * 9301 + 49297) % 233280 / 233280.0 generate a random number?



它没有。 它生成一个完全确定的数字。结果序列 可能看起来很随意 乍一看,因此这是一个伪随机生成器。更准确地说,它是一个 linear congruential generator .

你说你对“神奇”数字很好奇。好吧,它们实际上大多是从几乎无限的数字集中任意选择的。通常,出于数论原因(主要是为了避免生成的模式中非常明显的重复),使用质数系数(尤其是作为除数);然而,像这样的朴素 LCG 会产生非常低质量的 PRN,所以如果非常需要高质量的伪随机性,那么尝试和调整 LCG 是毫无意义的——只需使用更好的 PRNG 算法。

关于random - 为什么 "(seed * 9301 + 49297) % 233280/233280.0"会生成一个随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33716998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com