Mam problemy z generowaniem normalnie rozłożonych liczb losowych (mu = 0 sigma = 1) przy użyciu JavaScript.Odchylenie w randomizowanych liczbach normalnie rozproszonych (javascript)
Próbowałem metody Box-Mullera i zigguratu, ale średnia z wygenerowanej serii liczb wychodzi jako 0,0015 lub -0,0018 - bardzo daleko od zera !! Ponad 500 000 liczb losowo generowanych to duży problem. Powinno być bliskie zeru, coś jak 0,000000000001.
Nie mogę określić, czy jest to problem związany z metodą, czy też wbudowany JavaScript JavaScript Math.random()
generuje niepoprawnie równomiernie rozłożone liczby.
Czy ktoś ma podobne problemy?
Tutaj można znaleźć funkcję zigguratu:
A poniżej jest kod na Box-Muller:
function rnd_bmt() {
var x = 0, y = 0, rds, c;
// Get two random numbers from -1 to 1.
// If the radius is zero or greater than 1, throw them out and pick two
// new ones. Rejection sampling throws away about 20% of the pairs.
do {
x = Math.random()*2-1;
y = Math.random()*2-1;
rds = x*x + y*y;
}
while (rds === 0 || rds > 1)
// This magic is the Box-Muller Transform
c = Math.sqrt(-2*Math.log(rds)/rds);
// It always creates a pair of numbers. I'll return them in an array.
// This function is quite efficient so don't be afraid to throw one away
// if you don't need both.
return [x*c, y*c];
}
Byłoby łatwiej pomóc jeśli pisać kod. –