Алгоритм резервуарной выборки

Резервуарная выборка (eng. «reservoir sampling») — это простой и эффективный алгоритм случайной выборки некоторого количества элементов из имеющегося вектора большого и/или неизвестного заранее размера. Я не нашел об этом алгоритме ни одной статьи на Хабре и поэтому решил написать её сам.

Итак, о чём же идёт речь. Выбрать один случайный элемент из вектора — это элементарная задача:

auto result = vect[rand() % vect.size()]; // С++

Задача «вернуть K случайных элементов из вектора размером N» уже хитрее. Здесь уже можно ошибиться — например, взять K первых элементов (это нарушит требование случайности) или взять каждый из элементов с вероятностью K/N (это нарушит требование взять ровно K элементов). Кроме того, можно реализовать и формально корректное, но крайне неэффективное решение «перемешать случайно все элементы и взять K первых». И всё становится ещё интереснее, если добавить условие того, что N — число очень большое (нам не хватит памяти сохранить все N элементов) и/или не известно заранее. Для примера представим себе, что у нас есть какой-то внешний сервис, присылающий нам элементы по одному. Мы не знаем сколько их придёт всего и не можем сохранить их все, но хотим в любой момент времени иметь набор из ровно K случайно выбранных элементов из уже полученных.

Алгоритм резервуарной выборки позволяет решить эту задачу за O(N) шагов и O(K) памяти. При этом не требуется знать N заранее, а условие случайности выборки ровно K элементов будет чётко соблюдено.
Читать дальше →
Алгоритм резервуарной выборки
Source: geektimes

[Перевод] Тлетворное влияние: как Штази защищала Восточную Германию от видеоигр

6 января 1988 года был одним из тех дней, когда в старом здании в стиле «барокко» на Клостерштрассе в Восточном Берлине кипела бурная деятельность. Тогда здание называлось «Домом юных талантов» (HdjT), но сегодня ему вернули первоначальное название — Дворец Подевильса, данное ему в честь его первого владельца, министра иностранных дел при Фридрихе Великом. В тот зимний день в комнате на первом этаже, обычно используемом для репетиций местного детского хора, столпилось 70-80 человек. Каждую среду здесь собирался компьютерный клуб — группа, преимущественно состоящая из молодых людей, львиной доле которых было примерно по двадцать лет, а самым молодым — всего шестнадцать.

Похожие клубы в 1980-х можно было найти по всей Германской Демократической Республике (ГДР), только в одном Берлине их насчитывалось около двадцати. Но некоторые из посетителей той встречи прибыли в HdjT издалека, и на то у них были причины. Несмотря на то, что это был «Центральный клуб» комсомольской организации FDJ, ни один из компьютеров здесь не был произведён в ГДР. Все они появились с Запада.

image

Читать дальше →
[Перевод] Тлетворное влияние: как Штази защищала Восточную Германию от видеоигр
Source: geektimes

Пост №3735802

Автор: Proteus_An

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3735802″ }, «headline»: «Anime :: разное», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/Anime-%D1%80%D0%B0%D0%B7%D0%BD%D0%BE%D0%B5-4865289.png», «height»: 1560, «width»: 520 }, «datePublished»: «2018-11-30T15:08:51+03:00», «dateModified»: «2018-11-30T15:08:51+03:00», «author»: { «@type»: «Person», «name»: «Proteus_An» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3735802
Source: Joyreactor

DataGrip 2018.3: поддержка Cassandra, генерация SQL-файлов из объектов, много улучшений в автодополнении и многое другое

Привет! Это рассказ о том, что нового в нашем плагине для баз данных. Мы выпускаем его, как отдельный продукт DataGrip, и поставляем почти во все другие наши IDE. Будет много картинок и гифок. Для тех, кому лень их смотреть:

  • Поддержка Cassandra
  • Создание SQL-файлов из объектов схемы
  • Новые инспекции
  • Много новых штук в автодополнении
  • Работа с источником данных через одно подключение
  • Новый поиск
  • Высококонтрастная цветовая схема

Спасибо тем, кто пробует EAP-версии и сообщает в наш трекер о проблемах: это помогает не дотащить их до релиза 🙂 Активные пользователи уже получили бесплатные подписки на год.

image
Читать дальше →
DataGrip 2018.3: поддержка Cassandra, генерация SQL-файлов из объектов, много улучшений в автодополнении и многое другое
Source: habrahabr

Объявлена российская цена Huawei Mate 20 RS от Porsche Design

Компания Huawei объявила о старте продаж в России нового флагманского смартфона Mate 20 RS, разработанного совместно с Porsche Design. Технически аппарат повторяет Mate 20 Pro, но его ключевой особенностью […]
Объявлена российская цена Huawei Mate 20 RS от Porsche Design
Source: 4pda

Пост №3735799

Автор: Genby

ссылка на гифкуБуду очень благодарен если подскажите автора.Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»http://furry.reactor.cc/post/3735799″ }, «headline»: «Буду очень благодарен если подскажите автора. / furry f :: furry canine :: furry gif :: furry art :: furry (фурри) :: medlichan :: фэндомы», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/furry-gif-furry-%D1%84%D1%8D%D0%BD%D0%B4%D0%BE%D0%BC%D1%8B-furry-f-4865292.gif», «height»: 672, «width»: 378 }, «datePublished»: «2018-11-30T15:05:41+03:00», «dateModified»: «2018-11-30T15:05:41+03:00», «author»: { «@type»: «Person», «name»: «Genby» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3735799
Source: Joyreactor

Инсайды #1520: Samsung Galaxy A8s, Huawei nova 4, Lenovo Z5S, две новинки Xiaomi

В новом выпуске Инсайдов: долгожданный смартфон Samsung лишится разъёма для наушников; OPPO представит сгибаемый аппарат на MWC 2019; Huawei приглашает на анонс смартфона с дисплеем Infinity-O; безрамочный […]
Инсайды #1520: Samsung Galaxy A8s, Huawei nova 4, Lenovo Z5S, две новинки Xiaomi
Source: 4pda

Пост №3735771

Автор: VolF Maple

Нарисовал по случаю своего дня рождения. Посвящается всем, кто встречает ДР у компьютера.Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3735771″ }, «headline»: «Нарисовал по случаю своего дня рождения. Посвящается всем, кто встречает ДР у компьютера. / компьютер :: сделал сам (нарисовал сам, сфоткал сам, написал сам, придумал сам, перевел сам) :: coub :: праздник :: день рождения :: VolF Maple (volfmaple, volfmaple.com) :: Happy Birthday :: тортик :: мультики :: заяц :: анимация :: прикол», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/VolF-Maple-coub-%D0%B4%D0%B5%D0%BD%D1%8C-%D1%80%D0%BE%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F-Happy-Birthday-4865252.jpeg», «height»: 720, «width»: 1280 }, «datePublished»: «2018-11-30T14:30:23+03:00», «dateModified»: «2018-11-30T14:30:23+03:00», «author»: { «@type»: «Person», «name»: «VolF Maple» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3735771
Source: Joyreactor

Пост №3735749

Автор: Arterton

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3735749″ }, «headline»: «техподдержка (приколы из техподдержки вконтакте и других сайтов)», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/%D1%82%D0%B5%D1%85%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%B0-4865222.jpeg», «height»: 840, «width»: 1280 }, «datePublished»: «2018-11-30T14:08:03+03:00», «dateModified»: «2018-11-30T14:08:03+03:00», «author»: { «@type»: «Person», «name»: «Arterton» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3735749
Source: Joyreactor

Пчеловоды против микроконтроллеров или о пользе ошибок

Пчеловоды за работой

Одним из наиболее консервативных видов деятельности человека является пчеловодство!
С момента изобретения рамочного улья и медогонки ~200 лет назад, прогресс коснулся данной области лишь незначительно.
Это выразилось в электрификации некоторых процессов выкачки(извлечения) меда да использование зимнего подогрева ульев.

Между тем, популяция пчел в мире сильно уменьшается — в силу изменения климата, широкого использования химии в сельском хозяйстве и того, что мы до сих пор не знаем чего-же хотят пчелы?

Мои пропали по первой причине, и это сильно поменяло изначальную концепцию «умного улья»

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

Ну и конечно-же вопрос цены — стоимость пчелиной семьи примерно равна стоимости простого улья и цене меда, производимой ими за сезон(год).

А теперь возьмите цену какого-то из взлетающих проектов и умножьте на количество ульев на коммерческой пасеке (от 100 и выше).

В общем, кому интересны пятничные размышления гика-пчеловода, прошу под кат!

Читать дальше →
Пчеловоды против микроконтроллеров или о пользе ошибок
Source: geektimes