Есть код
function randomNum(a, b, N){
var arr =[];
var rand;
for (i = 0; i <= N; i++) {
rand = Math.random() * (b-a) + a;
arr.push(rand + '\n');
}
arr.sort(numeric);
alert (arr);
}
Пользователь вводит начало и конец промежутка, а так же количество чисел, которые нужно рандомно получить с этого промежутка. Эти числа в процессе цикла записываются в массив, потом все сортируется по порядку возрастания (отдельная функция), и в итоге выводится массив. При границах 1-10, 1-20 и т.д. Все хорошо. Но если начальную границу с 1 изменить, к примеру, на 20 (20-30, на пример), будет выводится массив с числами от 1-10 (логика такая, что между 20 и 30 расстояние 10, вот он и выводит числа от 1 до 10).
Можно сделать так, чтобы выводились числа из промежутка (из 20-30, к примеру, 21,..... и т.д.)
А-а-а. Все понятно. Я увидел сквозь монитор, как Вы вызываете эту функцию:
Вы передаете туда строки.
function randomNum(a, b, N) {
var arr = [];
for (i = 0; i < N; i++) {
arr.push(Math.random() * (b - a) + a);
}
arr.sort((n1, n2) => n1 - n2);
return arr;
}
console.log(randomNum(20, 30, 5));
console.log(randomNum("20", "30", 5));
Обратите внимание: во втором массиве все элементы - строки, а не числа, и все заканчиваются на "20".
function randomNum(a, b, N) {
// !!!
a = +a;
b = +b;
N = +N;
// !!!
var arr = [];
for (i = 0; i < N; i++) {
arr.push(Math.random() * (b - a) + a);
}
arr.sort((n1, n2) => n1 - n2);
return arr;
}
console.log(randomNum(20, 30, 5));
console.log(randomNum("20", "30", 5));
Сборка персонального компьютера от Artline: умный выбор для современных пользователей