【发布时间】:2011-12-03 15:19:05
【问题描述】:
我想生成一个在一定范围内接近零的数字。例如,假设我希望数字在 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))));
}
【问题讨论】:
-
你在生成整数吗? stackoverflow.com/questions/1761626/weighted-random-numbers 。 -10 是有效的输出吗?
-
你必须更具体,很可能通过选择合适的
pdf。 -
您希望如何分配号码?是它在 10 90% 的时间里低于 10 的唯一要求吗?
标签: math probability