Java (завершают содержание X.java):
class X {
public static void main(String[] args) {
main(null);
}}
Рассмотрение всего синтаксического сахара, я задаюсь вопросом, может ли немного короче быть сделан в Java. Кто-либо?
РЕДАКТИРОВАНИЕ: ой, я отсутствовал уже существует почти идентичное отправленное решение.
РЕДАКТИРОВАНИЕ 2: я сказал бы, что этот - (мудрый символ) самое короткое
class X{public static void main(String[]a){main(null);}}
РЕДАКТИРОВАНИЕ 3: Благодаря Anders для указания на пустой указатель не оптимальный аргумент, таким образом, это короче, чтобы сделать:
class X{public static void main(String[]a){main(a);}}
Возможно, это не совсем то, что делает flickchart, но вы можете использовать вариант алгоритма ELO , который используется в шахматах (и других видах спорта), поскольку это, по сути, бои. / games, которые они выигрывают / проигрывают.
Обычно все фильмы начинаются с 0 побед / поражений, и каждый раз, когда они выигрывают, они получают определенное количество очков. Обычно у вас в среднем около 20 (но подойдет любое число), и победа над фильмом с таким же рейтингом, как и у вас, даст ровно эти 20. Победа над плохим фильмом может дать около 10 очков, а победа над лучшим фильмом может дать вам 30 очков. И наоборот, проигрывая хорошему фильму, вы теряете только 10 очков, но если проигрываете плохому фильму, вы теряете 30 очков.
Особенности алгоритма находятся в ссылке в википедии.
Или вы можете использовать вариант PageRank, см. prof. Классное описание Уилфа .
Как рассчитываются рейтинги? Как вы решаете, какой фильм занимает первое место в рейтинге? Вы должны учитывать, как часто элементы выигрывают и насколько хороши результаты побежденных.
Вам нужна взвешенная оценка, также называемая байесовской оценкой.
Я думаю, что Лучшие 250 фильмов IMDB - это лучшая отправная точка для создания рейтингового сайта. Некоторые фильмы набирают 300 000+ голосов, а другие - менее 50 000. IMDB использует байесовскую оценку для сопоставления фильмов друг с другом без несправедливого взвешивания популярных фильмов. Алгоритм приведен внизу страницы:
взвешенный рейтинг (WR) = (v ÷ (v + m)) × R + (m ÷ (v + m)) × C
где:
- R = среднее значение по фильму (среднее) = (Рейтинг)
- v = количество голосов за movie = (голосов)
- m = минимум голосов требуется, чтобы попасть в ТОП 250 (сейчас 3000)
- C = средний голос по всему отчету (в настоящее время 6.9)
для 250 лучших, только голоса от учитываются обычные избиратели.
Я не знаю, как IMDB выбрал 3000 в качестве минимального количества голосов. Они могли выбрать 1000 или 10000, и список был бы более или менее таким же. Может быть, они используют «среднее количество голосов после 6 недель кассовых сборов» или, может быть, они используют метод проб и ошибок.
В любом случае, это не имеет особого значения. Вышеупомянутая формула в значительной степени является стандартом для нормализации голосов при ранжировании веб-сайтов, и я почти уверен, что Flickrchart использует что-то похожее в фоновом режиме.
Формула работает так хорошо, потому что она «подтягивает» оценки к среднему, поэтому рейтинги выше среднее немного уменьшено, рейтинги ниже среднего немного увеличены. Однако сила притяжения обратно пропорциональна количеству голосов, которыми обладает фильм. Таким образом, фильмы с небольшим количеством голосов более агрессивно тянутся к среднему, чем фильмы с большим количеством голосов. Вот две точки данных, чтобы продемонстрировать это свойство:
Rank Movie Votes Avg Rating Weighted Rating
---- ----- ----- ---------- ---------------
219 La Strada 15,000+ 8.2 8.0
221 Pirates of the 210,000+ 8.0 8.0
Caribbean 2
Рейтинги обоих фильмов понижаются, но влияние на «Ла Страда» более драматично, поскольку у него меньше голосов и, следовательно, он не столь репрезентативен, как рейтинги для PotC.
Для В вашем конкретном случае у вас есть два предмета в «драке». Вам, вероятно, следует оформить свою таблицу следующим образом:
Items
-----
ItemID (pk)
FightsWon (int)
FightsEngaged (int)
Средний рейтинг - FightsWon / FightsEngaged. Взвешенный рейтинг рассчитывается по приведенной выше формуле.
Когда пользователь выбирает победителя в бою, увеличьте поле FightsWon победившего элемента на 1, увеличьте поле FightsEngaged обоих элементов на 1.
Надеюсь, это поможет! Вот две точки данных, чтобы продемонстрировать это свойство:
Rank Movie Votes Avg Rating Weighted Rating
---- ----- ----- ---------- ---------------
219 La Strada 15,000+ 8.2 8.0
221 Pirates of the 210,000+ 8.0 8.0
Caribbean 2
Рейтинги обоих фильмов понижаются, но влияние на «Ла Страда» более драматично, поскольку у него меньше голосов и, следовательно, он не столь репрезентативен, как рейтинги для PotC.
Для В вашем конкретном случае у вас есть два предмета в «драке». Вам, вероятно, следует оформить свою таблицу следующим образом:
Items
-----
ItemID (pk)
FightsWon (int)
FightsEngaged (int)
Средний рейтинг - FightsWon / FightsEngaged. Взвешенный рейтинг рассчитывается по приведенной выше формуле.
Когда пользователь выбирает победителя в бою, увеличьте поле FightsWon победившего элемента на 1, увеличьте поле FightsEngaged обоих элементов на 1.
Надеюсь, это поможет! Вот две точки данных, чтобы продемонстрировать это свойство:
Rank Movie Votes Avg Rating Weighted Rating
---- ----- ----- ---------- ---------------
219 La Strada 15,000+ 8.2 8.0
221 Pirates of the 210,000+ 8.0 8.0
Caribbean 2
Рейтинги обоих фильмов понижаются, но влияние на «Ла Страда» более драматично, поскольку у него меньше голосов и, следовательно, он не столь репрезентативен, как рейтинги для PotC.
Для В вашем конкретном случае у вас есть два предмета в «драке». Вам, вероятно, следует оформить свою таблицу следующим образом:
Items
-----
ItemID (pk)
FightsWon (int)
FightsEngaged (int)
Средний рейтинг - FightsWon / FightsEngaged. Взвешенный рейтинг рассчитывается по приведенной выше формуле.
Когда пользователь выбирает победителя в бою, увеличьте поле FightsWon победившего элемента на 1, увеличьте поле FightsEngaged обоих элементов на 1.
Надеюсь, это поможет! у вас есть два предмета в «драке». Вам, вероятно, следует оформить свою таблицу следующим образом:
Items
-----
ItemID (pk)
FightsWon (int)
FightsEngaged (int)
Средняя оценка - FightsWon / FightsEngaged. Взвешенный рейтинг рассчитывается по приведенной выше формуле.
Когда пользователь выбирает победителя в бою, увеличьте поле FightsWon победившего элемента на 1, увеличьте поле FightsEngaged обоих элементов на 1.
Надеюсь, это поможет! у вас есть два предмета в «драке». Вам, вероятно, следует оформить свою таблицу следующим образом:
Items
-----
ItemID (pk)
FightsWon (int)
FightsEngaged (int)
Средняя оценка - FightsWon / FightsEngaged. Взвешенный рейтинг рассчитывается по приведенной выше формуле.
Когда пользователь выбирает победителя в бою, увеличьте поле FightsWon победившего элемента на 1, увеличьте поле FightsEngaged обоих элементов на 1.
Надеюсь, это поможет! - Джульетта
Что касается flickchart, я немного поигрался с ним, и я думаю, что система рейтингов довольно проста. Я предполагаю, что в псевдокоде это выглядит примерно так:
if rank(loser) == null and rank(winner) == null
insert loser at position estimated from global rank
insert winner at position estimated from global rank
else if rank(winner) == null or rank(winner) < rank(loser)
then advance winner to loser's position and demote loser and all following by 1
Почему я так думаю? Во-первых, я полностью убежден, что их байесовские априорные значения не основаны на тщательном анализе моих предыдущих выборов. Кажется, они не могут догадаться, что, поскольку мне нравится «Возвращение джедая», мне нравится «Империя наносит ответный удар». Фактически, они не могут этого понять, потому что я видел Home Alone 2, что, возможно, я видел Home Alone 1. После сотен оценок выбор не возник.
Второй в общем, если вы посмотрите на приведенный выше код, вы можете найти небольшую ошибку, которую обязательно заметите на сайте. Вы можете заметить, что иногда вы делаете выбор, и победитель будет сдвигаться на один . Кажется, это происходит только тогда, когда проигравший не был добавлен ранее. Я предполагаю, что происходит то, что проигравший добавляется выше, чем победитель.
Кроме этого, вы заметите, что рейтинг не меняется вообще, если фильм с более низким рейтингом напрямую не превосходит фильм с более высоким рейтингом . . Я не думаю, что ведется какая-то реальная оценка: кажется, что сайт полностью лишен памяти, за исключением порядкового номера каждого фильма и вашего последнего рейтинга.
вы заметите, что рейтинг вообще не меняется, если фильм с более низким рейтингом не превосходит фильм с более высоким рейтингом напрямую . Я не думаю, что ведется какая-то реальная оценка: кажется, что сайт полностью лишен памяти, за исключением порядкового номера каждого фильма и вашего последнего рейтинга. вы заметите, что рейтинг вообще не меняется, если фильм с более низким рейтингом не превосходит фильм с более высоким рейтингом напрямую . Я не думаю, что ведется какая-то реальная оценка: кажется, что сайт полностью лишен памяти, за исключением порядкового номера каждого фильма и вашего последнего рейтинга.http://en.wikipedia.org/wiki/Maximize_Affirmed_Majorities?
(Or the BestThing voting algorithm, originally called the VeryBlindDate voting algorithm)
I believe this kind of 1 vs. 1 scenario might be a type of conjoint analysis called Discrete Choice. I see these fairly often in web surveys for market research. The customer is generally asked to choose between two+ different sets of features that they would prefer the most. Unfortunately it is fairly complicated (for a non-statistics guy like myself) so you may have difficulty understanding it.
Для этого есть расширение, но у меня пока нет опыта использования:
http://ipython.scipy.org/ ipython / ipython / вложение / билет / 154 / ipy_autoreload.
Подумав, лучшее решение для этого рейтинга фильмов выглядит следующим образом.
Требуемые данные:
Дополнительные данные:
Как выбрать голос для пользователя:
Как рассчитать рейтинг фильма:
голосов выигранных / голосов
против этого фильма в счет
Примечание: здесь есть дополнительные сведения. чтобы пользователю не было скучно, но это может быть полезно и для другой статистики, особенно если вы включите, сколько раз они голосовали за этот фильм над другим.
Убедитесь, что статистика по недавно добавленным фильмам собирается по ним как можно скорее и очень равномерно распределяется голоса по всем существующим фильмам жизненно важны для сохранения правильной статистики по остальным фильмам. Возможно, стоит поразить ввод кучи новых фильмов в систему, чтобы избежать временных сбоев в рейтинге (хотя и не немедленных и серьезных).
=== ЭТО ОРИГИНАЛЬНЫЙ ОТВЕТ ===
Проблема на самом деле очень просто. Я предполагаю, что вы хотите заказать фильм по предпочтению, чтобы проголосовать за фильм, т.е. фильм, занявший первое место, - это фильм, который с наибольшей вероятностью будет выбран в ходе голосования. Если вы сделаете так, что при каждом голосовании вы выбираете два фильма полностью случайным образом, вы можете рассчитать это с помощью простых математических расчетов.
Во-первых, каждый выбор из двух фильмов для голосования одинаково вероятен, поэтому результаты каждого голосования можно просто сложить вместе за счет (экономит умножение на 1 / nC2 на все). И очевидно, что вероятность того, что кто-то проголосует за один конкретный фильм против другого конкретного фильма, составляет всего голосов за фильм / количество голосов
.
Таким образом, чтобы подсчитать оценку для одного фильма, вы просто суммируете голосов за фильм / количество голосов
для каждого фильма, с которым он может быть сопоставлен.
Здесь возникнут небольшие проблемы, если вы добавите новый фильм, который не имеет ' У него было значительное количество голосов против всех других фильмов, так что вы, вероятно, захотите вывести его из рейтинга, пока не наберется определенное количество голосов.
=== ЧТО ДАЛЬШЕ НЕВЕРНО НЕПРАВИЛЬНО И В основном здесь ДЛЯ ИСТОРИИ КОНТЕКСТ ===
Этот метод подсчета очков основан на цепи Маркова вашей системы голосования, предполагая, что все возможные вопросы голосования были одинаково вероятными. [Это первое предложение неверно, потому что для получения значимых результатов все вопросы голосования должны иметь одинаковую вероятность в цепи Маркова] Конечно, это не так, и на самом деле это тоже можно исправить, поскольку вы знаете, насколько вероятен был каждый вопрос голосования, это просто количество голосов, которые были сделаны по этому вопросу! [Вероятность получить конкретный вопрос голосования на самом деле не имеет значения, поэтому это не помогает] Таким образом, с использованием того же графика, но с ребрами, взвешенными по результатам голосования ...
Вероятность получения каждого фильма с учетом того, что он был включен в голосование, равна вероятности получения каждого фильма и его нахождения в голосовании, деленной на вероятность он был включен в голосование. Получается голосов сумо (количество голосов) * количество голосов) / общее количество голосов
, разделенное на общее количество голосов (количество голосов) / общее количество голосов
. С большим количеством отказов получается голосов, соответствующих общему количеству голосов / количеству голосов, участвующих в этом фильме
. Что действительно просто!
Вероятность получения каждого фильма при условии, что он был включен в голосование, равна вероятности получения каждого фильма и его участия в голосовании, деленной на вероятность, что он был включен в голосование. Получается, что получается общих голосов сумо ((голосов за фильм / количество голосов) * количество голосов) / общее количество голосов
, разделенное на общее количество голосов (количество голосов) / общее количество голосов
. С большим количеством отмен это дает голосов, соответствующих фильму, всего голосов / количеству голосов, участвующих в этом фильме
. Что действительно просто!
Вероятность получить каждый фильм при условии, что он был включен в голосование, равна вероятности получения каждого фильма и его участия в голосовании, деленной на вероятность, что он был включен в голосование. Получается, что получается общих голосов сумо ((голосов за фильм / количество голосов) * количество голосов) / общее количество голосов
, разделенное на общее количество голосов (количество голосов) / общее количество голосов
. С большим количеством отмен это дает голосов, соответствующих фильму, всего голосов / количеству голосов, участвующих в этом фильме
. Что действительно просто!
голосов, соответствующих фильму, всего голосов / количеству голосов, участвующих в этом фильме
. Что действительно просто! С большим количеством отказов получается голосов, соответствующих общему количеству голосов / количеству голосов, участвующих в этом фильме
. Что действительно просто! Я сам некоторое время занимался проблемой ранжирования элементов с помощью попарного сравнения и хотел найти время, чтобы описать идеи, которые я придумал до сих пор.
На данный момент я просто сортирую по <выигранных боёв> / <всего боев>
, сначала самые высокие. Это отлично работает, если голосует только вы один или проголосовало много людей. В противном случае он может быстро стать неточным.
Одна из проблем заключается в том, как выбрать, какие два предмета должны сражаться. Одна вещь, которая, кажется, действительно работает хорошо (субъективно), - это позволить предмету, у которого меньше всего боевых действий, сражаться со случайным предметом. Это приводит к относительно равномерному количеству схваток за пункты (-> точность) ценой, возможно, скучной для избирателя (ов). Они часто будут сравнивать новейший предмет с чем-то еще, что довольно скучно. Чтобы облегчить это, вы можете выбрать n предметов с наименьшим количеством боев и выбрать один из них случайным образом в качестве первого соперника.
Вы упомянули, что хотите, чтобы победы над сильными противниками учитывались больше, чем против слабых. Как упоминалось в других сообщениях выше, рейтинговые системы, используемые для шахмат и т.п. (Elo, Glicko), могут работать. Лично мне хотелось бы использовать TrueSkill от Microsoft, так как он кажется наиболее точным, а также дает хороший способ выбрать два предмета, чтобы противопоставить их друг другу - те, которые имеют самую высокую вероятность ничьей, рассчитанную TrueSkill. Но, увы, моего математического понимания недостаточно, чтобы по-настоящему понять и реализовать детали системы, и в любом случае за нее могут взиматься лицензионные сборы ...
Коллективный выбор: конкурентные рейтинговые системы содержит хороший обзор нескольких различных рейтинговых систем, если вам нужна дополнительная информация / вдохновение.
Помимо рейтинговых систем, вы также можете попробовать различные простые лестничные системы. Один пример:
Это относительно нестабилен вначале, но со временем должен улучшиться. Однако он никогда не перестает колебаться.
Надеюсь, что смогу хоть немного помочь.