#javascript
#javascript
Вопрос:
Допустим, у меня есть 3 массива объектов:
const fruits = [
{name: "Banana"},
{name: "Apple"},
{name: "Peach"}
]
const car = [
{name: "Audi"},
{name: "Bentley"}
]
const books = [
{name: "Alice in wonderland"},
{name: "Deep in the dark"},
{name: "Hunting Show"}
]
один временный массив, в котором я буду хранить случайные объекты из массивов
const tempArray = []
Я хочу получить случайный объект из случайного массива
80% процентная вероятность того, что я получу случайный объект из массива фруктов или автомобилей
20% процентная вероятность того, что я получу случайный объект из массива книг
Пример: случайный шанс равен 80% -> случайный объект из массива fruits помещается в tempArray, а tempArray должен иметь объект с бананом «Banana»
Случайный шанс равен 20% -> Случайный объект из книг массива передается в tempArray, а tempArray должен иметь объект с именем «Охотничье шоу»
Как я могу это сделать в javascript?
Комментарии:
1. Очень вероятно, что некоторые из них будут работать
2.
const chance = Math.random()
даст вам число от 0 (включительно) до 1, из которого вы можете проверить, еслиchance > 0.2
затем нажатьcar
илиfruit
во временный массив, либо нажатьbooks
на временный массив
Ответ №1:
Вам нужно будет получить два случайных числа — первое, чтобы решить, какую группу выбрать, а второе, чтобы выбрать из нее элемент. Чтобы дать одной группе более высокий шанс быть выбранной, первое случайное число должно быть из диапазона 1-100 (для учета процентов), а затем группа определяется по диапазону в пределах этого.
Например, чтобы дать группе фруктов 80% шанс быть выбранным:
function getRandomNumber(min, max) {
return Math.floor(Math.random() * (max - min 1)) min;
}
const fruits = [
{name: "Banana"},
{name: "Apple"},
{name: "Peach"}
]
const car = [
{name: "Audi"},
{name: "Bentley"}
]
const books = [
{name: "Alice in wonderland"},
{name: "Deep in the dark"},
{name: "Hunting Show"}
]
const tempArray = [];
let groupChoice = getRandomNumber(1, 100);
if (groupChoice > 20) {
tempArray.push(fruits[getRandomNumber(0, fruits.length - 1)].name);
} else {
tempArray.push(books[getRandomNumber(0, books.length - 1)].name);
}
console.log(tempArray);
Комментарии:
1. нп — но имейте в виду, что это касается только двух групп — фруктов и книг. Если вы хотите включить также группу car, вам нужно будет обновить
if()
тесты, чтобы учесть другие диапазоны
Ответ №2:
Сначала мы объединяем массивы fruits и car. Затем мы генерируем случайное число от 1 до 100. Число от 1 до 80 выберет случайный элемент из массива fruitsAndCar, а число от 81 до 100 выберет случайный элемент из массива books.
const fruits = [
{name: "Banana"},
{name: "Apple"},
{name: "Peach"}
]
const car = [
{name: "Audi"},
{name: "Bentley"}
]
const books = [
{name: "Alice in wonderland"},
{name: "Deep in the dark"},
{name: "Hunting Show"}
]
const tempArray = []
const fruitsAndCar = fruits.concat(car);
let randomNumber = Math.floor((Math.random() * 100) 1); // 1 to 100
if (randomNumber <= 80) {
let randomIndex = Math.floor(Math.random() * fruitsAndCar.length); // 0 to 4
tempArray.push(fruitsAndCar[randomIndex]);
} else {
let randomIndex = Math.floor(Math.random() * books.length); // 0 to 2
tempArray.push(books[randomIndex]);
}
console.log('tempArray: ' JSON.stringify(tempArray));