如何从JavaScript生成包含有界Pareto随机整数';随机数学

如何从JavaScript生成包含有界Pareto随机整数';随机数学,javascript,random,statistics,distribution,Javascript,Random,Statistics,Distribution,发件人: 我已经尝试实现这个公式,尽管它是基于使用均匀分布在(0,1)上的随机数并生成分数,而JavaScript中的Math.random在[0,1]上生成数字,并且我正在寻找整数,但没有成功: 函数getRandomIntInclusivePareto(最小值、最大值、alpha=1){ 常数u=数学随机(); 常数x= (-( (u*max**alpha-u*min**alpha-max**alpha)/ (最大**α*最小**α) ))**-(1/α); 返回x; } console

发件人:

我已经尝试实现这个公式,尽管它是基于使用均匀分布在(0,1)上的随机数并生成分数,而JavaScript中的Math.random在[0,1]上生成数字,并且我正在寻找整数,但没有成功:

函数getRandomIntInclusivePareto(最小值、最大值、alpha=1){ 常数u=数学随机(); 常数x= (-( (u*max**alpha-u*min**alpha-max**alpha)/ (最大**α*最小**α) ))**-(1/α); 返回x; }
console.log(getRandomIntInclusivePareto(0,1024));好的,首先代码中有一个bug,您不能让console.log(getRandomIntInclusivePareto(0,1024)起作用

其次,为了得到整数,您必须计算整数和样本值作为离散分布的概率 连续采样,对离散Paretto不起作用。要进行离散采样, 您必须设置样本列表(或范围)及其概率。 我正在使用离散采样的代码。 概率是通过帕累托分布计算的。只需从链接中复制代码并将其放在下面的代码段顶部即可运行

节点12.1,x64 Win10

function getRandomIntInclusivePareto(min, max, alpha = 1.0) {
    var probabilities = []; // probabilities 
    for (var k = min; k <= max; ++k) {
        probabilities.push(1.0/Math.pow(k, alpha)); // computed according to Paretto
    }                                               // would be normalized by SJS

    var disc = SJS.Discrete(probabilities); // discrete sampler, returns value in the [0...probabilities.length-1] range
    q = disc.draw() + min; // back to [min...max] interval

    return q;
}

console.log("Testing Paretto");

var t = getRandomIntInclusivePareto(1, 10, 1.3);

console.log(t);
函数getRandomIntInclusivePareto(最小值、最大值、alpha=1.0){ var概率=[];//概率
对于(var k=min;k)您尝试了什么?向我们展示代码我已经添加了一个指向维基百科上原始文章的链接;这是您在任何时候引用web上的另一篇文章时都应该做的事情,但特别是对于根据许可的内容,就像维基百科上的内容一样()。