Math 如何生成接近零的随机数?

Math 如何生成接近零的随机数?,math,probability,Math,Probability,我想生成一个接近零的数字,具有一定的一般范围。例如,假设我希望这个数字在90%的时间里降到10%以下,但是有一个很小的可能性是15,20,甚至30。数字越高,收到它的机会越低 我试着寻找一些关键词“加权概率”的东西,但找不到任何指向正确方向的东西 更新: 最后,我使用了Box-Muller变换(参见公认的答案)。以下是我编写的简单代码: const E = 2.71828183; function getRandomCurvedValue(temp.median, temp.density)

我想生成一个接近零的数字,具有一定的一般范围。例如,假设我希望这个数字在90%的时间里降到10%以下,但是有一个很小的可能性是15,20,甚至30。数字越高,收到它的机会越低

我试着寻找一些关键词“加权概率”的东西,但找不到任何指向正确方向的东西


更新:

最后,我使用了Box-Muller变换(参见公认的答案)。以下是我编写的简单代码:

const E = 2.71828183;

function getRandomCurvedValue(temp.median, temp.density) {
  return this.getCurvedValue(random(0, 1), temp.median, temp.density);
}

function getCurvedValue(temp.value, temp.median, temp.density) {
  return temp.median + (temp.density * log(E, (temp.value / (1 - temp.value)))); 
}

我想你是在找一份工作

正态分布有两个可以改变的变量:均值和标准差。在您的情况下,平均值为0,适当选择标准偏差,使90%的值低于10。(根据维基百科文章中的表格,我认为标准偏差1.645是合适的。)


可以使用作为从均匀分布的随机值生成正态分布随机值的简单方法。您还需要使用结果的绝对值,因为您只需要[0]范围内的值,∞).

我想你在找一个新的工作

正态分布有两个变量可以更改:均值和标准差。在您的情况下,均值为0,适当选择标准差,使90%的值低于10。(根据维基百科文章中的表格,我认为标准差为1.645是合适的。)


可以使用作为从均匀分布随机值生成正态分布随机值的简单方法。此外,还需要使用结果的绝对值,因为您只需要[0]范围内的值,∞).

一种可能性是生成一组随机数(对于每次迭代)。选择这些随机数中的最小值作为生成的数

显然,您选择的数字越多,最小数字越小

示例:假设在集合中生成两个随机数,选择9和10。9是因为它是最小的

假设您在集合中生成四个随机数,9、10、11和8。选择8是因为它是您的最小值


同样,使用这种方法,重要的是要有一个范围,从中选择数字,比如从1到100…(这是一种限制因素)

一种可能性是生成一组随机数(对于每次迭代)。这些数字中的最小值被选为生成的数字

显然,您选择的数字越多,最小数字越小

示例:假设在集合中生成两个随机数,选择9和10。9是因为它是最小的

假设您在集合中生成四个随机数,9、10、11和8。选择8是因为它是您的最小值


同样,使用这种方法,重要的是你要有一个范围来选择数字,比如说从1到100…(这是一种限制因素)

如果我理解正确,你只需要正随机数。在这种情况下,你可以使用例如。这个分布有一个参数lambda。如果你“希望数值在90%的时间内降到10以下”,那么lambda可以计算为
-ln(0.1)/10
(这里
ln
是自然对数)。通常,如果希望它以概率p降到x以下,那么
lambda=-ln(1-p)/x
(在您的示例中,p=0.9,x=10)。您可以使用以下公式轻松生成具有给定lambda参数的指数分布随机数:
-ln(1-rand())/lambda
,其中函数
rand()
是一个函数,它可以生成0和1之间均匀分布的随机数。

如果我理解正确,您只需要正随机数。在这种情况下,您可以使用例如。此分布有一个参数lambda。如果您“希望数字在90%的时间内下降到10%以下”,则lambda可以计算为
-ln(0.1)/10
(此处
ln
是自然对数)。通常,如果希望它以概率p降到x以下,则
lambda=-ln(1-p)/x
(在您的示例中,p=0.9,x=10)。您可以使用以下公式轻松生成具有给定lambda参数的指数分布随机数:
-ln(1-rand())/lambda
,其中函数
rand()
是一个可以生成0到1之间均匀分布的随机数的函数。

您生成整数了吗?-10是有效的输出吗?您必须更具体一些,很可能是通过选择合适的
pdf
。您希望如何分配数字?唯一的要求是它在90%的时间内低于10?您是gen吗运算整数?.10是有效的输出吗?你必须更具体一些,最可能的方法是选择一个合适的
pdf
。你想如何分配你的数字?唯一的要求是它在90%的时间内低于10?这很完美,谢谢!我在问题的结尾添加了我使用的代码。这很完美,谢谢!我添加了我用来结束我的问题的代码。