n.toString(9)
– используются цифры от 0 до 8 и точно нет ни одной девятки. Единицы меняем на девятки. Остаётся добавить две единицы на случайных позициях.function tworandom() {
const arr = Math.floor(Math.random() * 9e8).toString(9).replace(/1/g,9).split('');
for (let i = 2; i > 0; i--) arr.splice(Math.floor(Math.random() * arr.length), 0, 1);
return +arr.join('');
}
[...Array(5)].map(tworandom)
// 6401715726, 950818173966, 915469690179, 4191464422, 223063891715
const createArr = (len, digit, count) => {
const d = [...Array(9)].map((n, i) => i + (i >= digit));
return [...Array(len)].map(() => {
const number = [...Array(Math.random() * 10 | 0)].map(() => d[Math.random() * d.length | 0]);
for (let i = 0; i < count; i++) {
number.splice(Math.random() * number.length | 0, 0, digit);
}
return +number.join('');
});
};
const arr = createArr(5, 1, 2);
function create(length, range) {
//создаем массив
let arr = [];
//заполняем массив случайными числами из заданного диапазона
for (const i = 0; i < length; i++) {
if (i = pos1 || i=pos2)
continue;
arr[i].push(Math.random(range));
}
//выбираем 2 случайные позиции в массиве
let pos1 = Math.random(length);
let pos2 = Math.random(length);
//если позиции совпадают меняем одну из них на новую случайную
while (pos1 == pos2){
pos2 = Math.random(length);
}
//добавляем единицы в выбранные случайные позиции
arr[pos1] = 1;
arr[pos2] = 1;
}