Хобрук: Ваш путь к мастерству в программировании

Сгенерировать массив чисел, соответствующих распределению вероятностей в Ruby?

Скажем, у меня есть 100 записей, и я хочу высмеять дату created_at, чтобы она соответствовала некоторой кривой. Есть ли для этого библиотека или какую формулу я могу использовать? Я думаю, это идет по тому же пути:

Генерация случайных чисел с вероятностным распределением

Я мало знаю о том, как они классифицируются по математике, но я смотрю на такие вещи, как:

  • кривая колокола
  • логарифмическая (типичная для биологии / эволюции) кривая? ...

Просто ищу формулы в коде, чтобы сказать следующее:

  • Учитывая 100 записей, временной интервал 1.week и интервал 12.hours
  • установите created_at для каждой записи так, чтобы она примерно соответствовала curve

Большое спасибо!

Обновить

Я нашел это сообщение на форуме о рубиновых алгоритмах, что привело меня к rsruby, мост R / Ruby, но это кажется слишком большим.

Обновление 2

Я написал этот небольшой отрывок, пробуя gsl библиотеку, добираясь туда ...

Сгенерируйте тестовые данные в Rails, где created_at попадает в статистическое распределение

29.12.2010

Ответы:


1

Вы можете генерировать временные метки UNIX, которые на самом деле являются просто целыми числами. Сначала определитесь, когда вы хотите начать, например сейчас:

start = DateTime::now().to_time.to_i

Узнайте, когда должен быть конец вашего интервала (скажем, через 1 неделю):

finish = (DateTime::now()+1.week).to_time.to_i

Ruby использует этот алгоритм для генерации случайных чисел. Это почти однородно. Затем сгенерируйте случайные числа между двумя:

r = Random.new.rand(start..finish)

Затем преобразуйте это обратно в дату:

d = Time.at(r)

Это тоже выглядит многообещающим: http://rb-gsl.rubyforge.org/files/rdoc/randist_rdoc.html

И это тоже: http://rb-gsl.rubyforge.org/files/rdoc/rng_rdoc.html

29.12.2010
  • но это не подходит для конкретного дистрибутива 29.12.2010
  • см. добавленные ссылки выше - они кажутся полезными 29.12.2010

  • 2

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

    Я еще не пробовал, но звучит многообещающе.

    27.09.2012
  • Я использую это для генерации случайных нормальных данных в рубине, и это действительно хорошо. 14.05.2014

  • 3

    Из wiki:

    Существует несколько методов генерации случайного числа на основе функции плотности вероятности. Эти методы включают в себя какое-либо преобразование однородного случайного числа. Из-за этого эти методы одинаково хорошо работают при генерации как псевдослучайных, так и истинных случайных чисел.

    Один метод, называемый методом инверсии, включает интеграцию до площади, большей или равной случайное число (которое должно быть сгенерировано от 0 до 1 для правильного распределения).

    Второй метод, называемый методом принятия-отклонения, включает выбор значений x и y и тестирование больше ли функция x значения y. Если это так, принимается значение x. В противном случае значение x отклоняется, и алгоритм пытается снова.

    Первый метод используется в принятом ответе на вопрос, связанный с SO: Генерация случайных чисел с вероятностным распределением

    29.12.2010

    4

    Другой вариант - гем Распространение под SciRuby. Вы можете генерировать нормальные числа:

    require 'distribution'
    
    rng = Distribution::Normal.rng
    random_numbers = Array.new(100).map { rng.call }
    

    Существуют также ГСЧ для различных других дистрибутивов.

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

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

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

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..