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 rand = (max, min = 0) =>
Math.floor(Math.random() * (max - min)) + min;
const createArr = ({
length,
digit,
digitCount,
max = Number.MAX_SAFE_INTEGER,
}) =>
Array.from({ length }, function() {
const digits = `${rand(max, 10 ** (digitCount - !!digit))}`
.replace(RegExp(digit, 'g'), (_, i) => this[rand(this.length, +!(i || digit))])
.split('');
const index = [...digits.keys()].slice(+!digit);
for (let i = 0; i < digitCount; i++) {
digits.splice(index.splice(rand(index.length), 1)[0], 1, digit);
}
return +digits.join('');
}, [...Array(10).keys()].filter(n => n !== digit));const arr = createArr({
length: 5,
digit: 1,
digitCount: 2,
max: 10 ** 5,
}); 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;
}