Из этого ответа я узнал, как сгенерировать список случайных чисел с фиксированным диапазоном, средним и средним значением. Javascript: генерировать случайные числа с фиксированным средним и стандартным отклонением , но я также изучил эту математику. random () не соответствует нормальному распределению. Моя проблема в том, можно ли создать список случайных чисел после нормального распределения с фиксированным диапазоном, средним значением и sd в JavaScript? т. е. случайным образом вытянуть 10 чисел из нормального распределения в диапазоне от 2 до 100; среднее значение должно быть 20, а sd должно быть 10?
для части нормального распределения, я попытался извлечь случайные числа (от 0 до 1) из нормального распределения, чтобы заменить Math.random ( ) функция:
function randn_normal() {
var u = 0, v = 0;
while (u === 0) u = Math.random(); //Converting [0,1) to (0,1)
while (v === 0) v = Math.random();
let num = Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);
num = num / 10.0 + 0.5; // Translate to 0 -> 1
if (num > 1 || num < 0) return randn_normal(); // resample between 0 and 1
return num;
}