Javascript 如何在js上创建随机概率矩阵?

Javascript 如何在js上创建随机概率矩阵?,javascript,php,Javascript,Php,例如: probability_matrix(3) return == > [0.2; 0.5; 0.3] [0.2; 0.3; 0.5] [0.6; 0.2; 0.2] 行和列中的元素之和必须等于一 函数生成矩阵(编号){ var系数=1/个; var indexMass=数组(数字); var矩阵=数组(数字); //创建平均值均匀分布的数组 对于(变量i=0;i

例如:

probability_matrix(3)

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

行和列中的元素之和必须等于一


函数生成矩阵(编号){
var系数=1/个;
var indexMass=数组(数字);
var矩阵=数组(数字);
//创建平均值均匀分布的数组
对于(变量i=0;ia+b,0);
矩阵[i].拼接(rand_指数,0,newElem);
}
//t将剩余的(行)替换为(行),使列中的元素之和等于1
对于(变量i=0;i
您面临什么问题?您尝试过什么吗?行和列中的元素之和必须等于one@TerenikDmitry你想要负数吗?不,它必须是概率矩阵。数字应该总是正好是小数点后一位吗?它们是0.0还是1.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;
}