Почему в переменная начинает хранить значение infinity?
Никак не могу понять почему переменная let sQuare, становиться infiity.
function getRandomInt(min, max) {
return Math.random() * (max - min) + min;
}
let random = Math.random()*10;
let nTrials = 5000; // кол-во испытаний
let nSteps = 500; // кол-во шагов
let arrN = [];
let sTwo = []; // список квадратов отклонения
// подсчет в цикле
for (let i = 10; i < nSteps; i+=10)
{
arrN.push(i);
s = 0;
sQuare = 0;
for (let j = 0; j <= nTrials; j++)
{
s += s + getRandomInt(-1,1);
sQuare += Math.sqrt(s);
}
console.log(sQuare);
sQuare = sQuare/nTrials;
sTwo.push(sQuare)
}
console.log(sTwo);
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
Ну NaN оно становится, потому что
s += s + getRandomInt(-1,1); // изначально s = 0 и может стать s < 0
sQuare += Math.sqrt(s);
приводит к тому, что вычисляется квадратный корень из отрицательного числа
А Infinity вылезает, потому что 5000 раз вы делаете
s += s + getRandomInt(-1,1);
Что приводит к уходу из диапазона
например, s += s выполненное 5000 раз - равно s0 * 2^5000 - s0 * 1e1505, что как-то многовато :)
Автор решения: Igor
→ Ссылка
for (let j = 0; j <= nTrials; j++)
{
let r = getRandomInt(-1,1);
sQuare += r * r;
}