如何为一组值分配概率(均匀增加或减少线性分布)?

时间:2016-08-30 05:35:12

标签: javascript math numbers probability

  

给定X = [1,2,3,4,5,6,7,8,9,10] - 但X可以是任意长度(N)

     

我想实现以下目标:

     
      
  1. 我想给出第一个值X [0],概率最高。
  2.   
  3. 我想给第二个值X [1],概率小于X [0]。
  4.   
  5. 我想给第三个值X [2],概率小于X [1]。
  6.   
  7. ...
  8.   
  9. 我想给出最后一个值X [N],概率小于X [N-1]
  10.         

    所有概率应总计为1。

为了清晰起见,均匀概率分布(1 /(X.length))如下所示:

{1:0.1,2:0.1,3:0.1,4:0.1,5:0.1,6:0.1,7:0.1,8:0.1,9:0.1,10:0.1,}

如果可能的话,javascript中的解决方案会很棒。

2 个答案:

答案 0 :(得分:1)

最后一个元素的概率是q,前一个元素是2 * q,前一个是3 * q ...而第一个是N * q

bool PreciseControl::eventFilter(QObject *, QEvent *event) 
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);


if(event->type() == QEvent::MouseButtonPress &&
                    mouseEvent->button()==Qt::RightButton )
 {


        emit rightMousePressed();
        return true;
 }
else if(event->type() == QEvent::MouseButtonRelease &&
        mouseEvent->button()==Qt::RightButton )
{
        emit rightMouseReleased();
        return true;
}


if(event->type() == QEvent::MouseButtonPress &&
                    mouseEvent->button()==Qt::LeftButton )
 {


        emit leftMousePressed();
        return true;
 }
else if(event->type() == QEvent::MouseButtonRelease &&
        mouseEvent->button()==Qt::LeftButton )
{
        emit leftMouseReleased();
        return true;
}

 return false;}

因此,您可以找到任何序列长度的q并获得每个元素的概率。 N = 3

的示例
  q + 2 * q + 3 * q +...+(N-1)*q + N * q  = 1
  q * Sum(1...N) = 1
  q * N * (N + 1) / 2 = 1
  q = 2 / (N * (N + 1))

概率:

  q = 2 / (3 * 4) = 1/6

答案 1 :(得分:1)

您可以对指数求和(所有值增加1)并使用总和来计算概率。

对于反向分布,反转概率数组。

var add = (a, b) => a + b,
    data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    sum = data.length * (data.length + 1) / 2,
    probability = data.map((_, i) => (i + 1) / sum),
    sumProbability = probability.reduce(add, 0);

console.log(probability);
console.log(sumProbability);