2017-04-23 70 views
-2

如:如何在js上創建隨機概率矩陣?

probability_matrix(3) 

return == > 
[0.2; 0.5; 0.3]  
[0.2; 0.3; 0.5]  
[0.6; 0.2; 0.2] 

的行和列的元素之和必須等於一個

+1

你面臨什麼困難?你有嘗試過什麼嗎? – FirstOne

+1

行和列中元素的總和必須等於1 –

+0

@TerenikDmitry你想要負數嗎? –

回答

0

我的壞鱈魚:


function generationMatrix(number) { 
    var coefficient = 1/number; 
    var indexMass = Array(number); 
    var matrix = Array(number); 
    // Create an array with uniformly distributed mean values 
    for (var i = 0; i < number; i++) { 
     indexMass[i] = i; 
     var row = Array(number); 
     for (var j = 0; j < number; j++) { 
      row[j] = getRandom(coefficient/2, coefficient); 
     } 
     matrix[i] = row; 
    } 
    // In (number-1) lines, we change the random element to such that the sum of the elements in the (row) is equl 1 
    for (var i = 0; i < number - 1; i++) { 
     var rand_index = indexMass.splice((Math.floor(Math.random() * indexMass.length)), 1); 
     matrix[i].splice(rand_index, 1); 
     var newElem = 1 - matrix[i].reduce((a, b) => a + b, 0); 
     matrix[i].splice(rand_index, 0, newElem); 
    } 
    // TReplace the remaining (row) with a (row) such that the sum of the elements in the columns is equl 1 
    for (var i = 0; i < number; i++) { 
     var sum = 0; 
     for (var j = 0; j < number; j++) { 
      if (j != indexMass[0]) 
       sum += matrix[i][j]; 
     } 
     matrix[indexMass[0]][i] = 1 - sum; 
    } 
    return matrix; 
}