Chỉ tạo số ngẫu nhiên N, tính tổng của chúng, chia mỗi số cho tổng.
Expanding on Guillaume's accepted answer, đây là chức năng Java thực hiện chính xác điều đó.
public static double[] getRandDistArray(int n, double m)
{
double randArray[] = new double[n];
double sum = 0;
// Generate n random numbers
for (int i = 0; i < randArray.length; i++)
{
randArray[i] = Math.random();
sum += randArray[i];
}
// Normalize sum to m
for (int i = 0; i < randArray.length; i++)
{
randArray[i] /= sum;
randArray[i] *= m;
}
return randArray;
}
Trong một hoạt động kiểm tra, getRandDistArray(5, 1.0)
trở như sau:
[0.38106150346121903, 0.18099632814238079, 0.17275044310377025, 0.01732932296660358, 0.24786240232602647]
Nguồn
2017-04-02 17:32:25
Bản sao có thể có của [Số ngẫu nhiên thêm 100: Matlab] (https://stackoverflow.com/questions/8064629/random-numbers-that-add-to-100-matlab) – jberryman