Nano Hash - криптовалюты, майнинг, программирование

Node.js меня троллит. Генерация случайных имен и твитов с использованием массивов

Этот вопрос включает в себя фрагмент кода, который должен генерировать случайные твиты. Однако я не понимаю построчно, что происходит; особенно с

Math.floor(Math.random() * arr.length)  

Я предполагаю, что он выбирает случайную длину массива, которая усекается до наименьшего целого числа, а затем назначается как длина массива randArrayEl[].

Однако я не понимаю, как он выбирает случайные имена и фамилии со следующим:

  return randArrayEl(fakeFirsts) + " " + randArrayEl(fakeLasts);

Вот весь код. Кто-нибудь может объяснить логику каждой строки?

var randArrayEl = function(arr)
{
  return arr[Math.floor(Math.random() * arr.length)];
};

var getFakeName = function()
{
  var fakeFirsts = ['Nimit', 'Dave', 'Will', 'Charlotte', 'Jacob','Ethan','Sophia','Emma','Madison'];
  var fakeLasts = ["Alley", 'Stacky', 'Fullstackerson', 'Nerd', 'Ashby', 'Gatsby', 'Hazelnut', 'Cookie', 'Tilde', 'Dash'];
  return randArrayEl(fakeFirsts) + " " + randArrayEl(fakeLasts);
};

var getFakeTweet = function()
{
  var awesome_adj = ['awesome','breathtaking','amazing','sexy','sweet','cool','wonderful','mindblowing'];
  return "Fullstack Academy is " + randArrayEl(awesome_adj) + "! The instructors are just so " + randArrayEl(awesome_adj) + ". #fullstacklove #codedreams";
};

for(var i=0; i<10; i++)
{
  store.push(getFakeName(), getFakeTweet());
}

Кроме того, что должен делать цикл for в конце?

29.04.2014

Ответы:


1

randArrayEl возвращает случайный элемент из массива. Для этого он выбирает случайное целое число от 0 до arr.length-1 (поскольку Math.random() никогда не возвращает ровно 1) и возвращает этот элемент из массива.

Таким образом, randArrayEl(fakeFirsts) возвращает случайное имя из массива fakeFirsts, а также для randArrayEl(fakeLasts). Объедините их пробелом, и вы получите случайную комбинацию имени и фамилии!

getFakeTweet работает аналогично randArrayEl(awesome_adj) для описания Fullstack Academy.

Наконец, цикл for помещает 10 случайных твитов и связанных с ними случайных имен в массив store.

29.04.2014

2

randArrayEl выбирает один случайный элемент из массива.

Взгляните на линию изнутри наружу:

  • Math.random() дает вам случайное число от 0 до 1;
  • Math.random() * arr.length дает вам случайное число от 0 до n, где n — количество элементов в этом массиве; но это не целое число/целое число;
  • Math.floor(Math.random() * arr.length) дает вам округленное целое число от 0 до n;
  • arr[Math.floor(Math.random() * arr.length)] дает вам текст, соответствующий этому номеру.

Цикл for в конце помещает поддельное имя и поддельный твит в «магазин» и повторяет это 10 раз.

29.04.2014

3

В линии

Math.floor(Math.random() * arr.length)

Math.random() возвращает число с плавающей запятой x в диапазоне 0 ‹= x ‹ 1. Умножение этого числа на arr.length дает вам число с плавающей запятой в диапазоне 0 ‹= x ‹ arr.length. Беря math.Floor, мы удаляем дробную часть, поэтому у вас остается целое число n в диапазоне 0 ‹= n ‹= arr.length-1.

Если вы сейчас получите доступ к массиву [n] для некоторого случайного n, вы получите случайную строку из массива строк. Итак, линия

return randArrayEl(fakeFirsts) + " " + randArrayEl(fakeLasts);

возвращает случайное имя из fakeFirsts, соединенное со случайным вторым именем, выбранным из fakeLasts (разделенные пробелом).

29.04.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..