Как стать автором
Обновить
37
0
Тельнов Виктор @victor79

программист

Отправить сообщение

С++: работа с таблицами

Время на прочтение12 мин
Количество просмотров15K

Хочу предложить к обозрению небольшую коллекцию функций, для удобной работы со списком структур. Такие списки представляются как таблицы, к ним со временем у меня приработался своеобразный функционал.

Читать далее
Всего голосов 15: ↑12 и ↓3+9
Комментарии42

Новелла про одну функцию. Основано на реальных событиях

Время на прочтение2 мин
Количество просмотров9.6K

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

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

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

Читать далее
Всего голосов 36: ↑31 и ↓5+26
Комментарии34

Вероятность выигрыша в покере

Время на прочтение10 мин
Количество просмотров37K

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

Так же будет небольшая программка, которая может грубо и быстро обсчитать начальный расклад.

Сразу оговорюсь, что я в покер не играю, и знаю его хуже чем те, кто играет свои первые партии в жизни. Но может это не так уж и важно?

Читать далее
Всего голосов 26: ↑24 и ↓2+22
Комментарии31

Что такое вероятность и как ее посчитать

Время на прочтение5 мин
Количество просмотров19K
Пусть будет некий абстрактный эксперимент в процессе которого может происходить некое событие. Этот эксперимент провели пять раз, и в четырех из них происходило то самое событие. Какие выводы можно сделать из этих 4/5?



Есть формула Бернулли, которая дает ответ, с какой вероятностью происходит 4 из 5 при известной исходной вероятности. Но она не дает ответ, какая была исходная вероятность, если событий получилось 4 из 5. Оставим пока в стороне формулу Бернулли.

Сделаем маленькую простенькую программку, симулирующую процессы вероятностей для такого случая, и на основе результата вычислений построим график.
Читать дальше →
Всего голосов 24: ↑17 и ↓7+10
Комментарии29

Снова прогнозирование, часть 2

Время на прочтение8 мин
Количество просмотров3.3K
Сегодня я опишу еще несколько свойств прогнозирования временных рядов.

А именно цикличность и усложнение варианта с подобием отрезков.


Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии2

Снова прогнозирование, часть 1

Время на прочтение5 мин
Количество просмотров5.5K
Рассмотрим прогнозирование временных рядов. Попытаемся спрогнозировать графики котировок, или что-нибудь другое, что под руку подвернется.


Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии2

Прогнозирование

Время на прочтение10 мин
Количество просмотров5.6K
Я уже писал, зачем нужно такое прогнозирование — Создание искусственного интеллекта.
Здесь же я буду описывать только алгоритм прогнозирования, без лишней лирики.

Рассматривать буду прогнозирование последовательности байтов или же текста UTF-8. Прогнозирование последовательности дробных чисел — графиков — во многом подобно, только нужно значения сравнивать не на равенство, а на принадлежность окрестностям.

Пусть будет поток байтов (или скажем текст UTF-8) — входящие прогнозируемые данные. Поступающие данные сохраняем во множество сохраненной истории. Каждое очередное поступающее значение учитываем в структуре для накопления статистики:
struct Stat {
	uint value; // прогнозируемое значение
	uint count; // количество прошедших таких значений

	// функция index используется шаблонным классом Index - ключ для rb-дерева
	static uint index(const Stat& s) { return s.value; }

	Ptrn* owner;

	double probability() const { return (double)count/(double)owner->sum_count_of_stat; }
};

// шаблонный класс Index это rb-дерево,
//  первый параметр шаблона — тип значения по которому происходит сортировка,
//  второй, это класс сохраняемых значений в узлах. Этот класс должен содержать
//  функцию index.

struct Ptrn {
	// узел, подсчитывающий, какое распределение вероятностей будет
	// следовать за значением value
	uint value;

	Index<uint,Stat> index_of_stat; // распределение вероятностей
	uint sum_count_of_stat;
	
	// путем добавления к текущему value еще влево
	//   будут образовываться паттерны
	Index<uint,Ptrn> index_of_prev;
	static uint index(const Ptrn& s) { return s.value; }

	Ptrn* owner; // owner->index_of_prev->find(value) == this,
	                     // для root этот owner равен nullptr
};

Ptrn root;

Читать дальше →
Всего голосов 6: ↑5 и ↓1+4
Комментарии14

Создание искусственного интеллекта

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

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

Что такое ИИ, об этом уже много было написано. Я ставлю вопрос по другому, не «что такое ИИ», а «зачем нужен ИИ». Мне он нужен, что бы заработать много денег, затем что бы компьютер выполнял за меня все, что я сам не хочу делать, после построить космический корабль и улететь к звездам.

Вот и буду здесь описывать, как заставить компьютер выполнять наши желания. Если вы ожидаете здесь увидеть описание или упоминание, как работает сознание, что такое самосознание, что значит думать или рассуждать — то это не сюда. Думать — это не про компьютеры. Компьютеры рассчитывают, вычисляют и выполняют программы. Вот и подумаем, как сделать программу, способную рассчитать необходимую последовательность действий для реализации наших желаний.

В каком виде в компьютер попадет наша задача — через клавиатуру, через микрофон, или с датчиков вживленных в мозг — это не важно, это дело вторичное. Если мы сможем компьютер заставить выполнять желания написанные текстом, то после мы можем поставить ему задачу, что бы он сделал программу, которая так же выполняет желания, но через микрофон. Анализ изображений так же лишний.
Читать дальше →
Всего голосов 23: ↑13 и ↓10+3
Комментарии34

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность