Почему у нас так странно падают предметы и точатся вещи?
-
Я решил сам всё же задачку про заточку решить Но сначала про еще одну несуразицу.
@Grif:
И из 6 шапок заточить только одну шанс вовсе не 0.15%, а в 6 раз больше, почти 1%Во-первых, я из 6-ти ни одной не заточил! Именно об этом речь. А во-вторых, из одной шапки заточить одну шанс 35%! А уж из 6 куда больше.
-
Вероятность заточить что-то на +6 со скилом WR10 равна 0.35. Следовательно вероятность сломать - 0.75. Вероятность поломать все 6 штук предметов будет 0.75^6=0.18 (18%)
-
Распределение случайных чисел от 0 до 9999
Вот код С программы
[code:23bhf33q]
#include <stdio.h>
#include <stdlib.h>#define NUM 10000
int main(){
long int *arr, i, mid, j;
double sum;arr = (int*)malloc(sizeof(int)*NUM);
if(arr == NULL){
printf("malloc failed\n");
return 1;
}for(i = 0; i < NUM; i++){
arr** = 0;**
** }**
** while(arr[0] < 1E6){**
** arr[rand()%NUM]++;**
** }**
** sum = 0.;**
** for(i = 0; i < NUM; i ++){**
** sum += arr**;**
** }**
** for(i = 0; i < NUM; i ++){**
** printf("%li\t%f\n", i, arr**/sum*NUM);**
** }**
** return 0;**
}
[/code:23bhf33q]
Ядро программы здесь:
[code:23bhf33q]
** while(arr[0] < 1E6){**
** arr[rand()%NUM]++;**
** }**
**[/code:23bhf33q]
**
**Т.е. Считается сколько каких чисел выпадает.
**
**Затем нормируется на сумму всех чисел и умножается на число элементов, чтоб среднее значение было 1.
**
**
**
**Вот распределение:
**
**
**
**
**
**Резкий скачек происходит с 2767 на 2768
**
**Среднее до скачка 1.221, после 0.916.
**
**
**
Может что-то зависит от машинки ? У меня рандом генерит от 0 до 32767. -
Grif, как я понял, испытания проводятся пока первого элемента не наберется в количестве 100000 штук (по-моему так нагляднее, нежели 1E6).
Не совсем понятно, почему именно такое условие, но, вроде, оно не хуже всех остальных и на достоверность результата не влияет
Никаких ошибок я не нашел в программе. И если их действительно нет, то полученный результат наводит на мысли. Один резкий скачек чего стоит. Хотя в том виде, что получился у тебя, нам это даже на руку. Но, как я понял, генератор может выдавать различные последовательности в зависимости от первоначальной инициализации. Ты бы попробовал его переинициализировать и несколько раз посчитать всё это.
Кстати, я почти уверен, что на нашем серваке такой же генератор. И он дает столь короткий цикл (32767 элементов). При диапозоне случайных величин от 1 до 10000 - этот генератор вообще не годится.
Прикол в том, что график может выглядеть с точностью до наоборот. Т.е. маленьких значений меньше чем больших и скачек может быть более резким.
Еще неплохо было бы, если бы видеть выпадение цифры 1 в динамике. Группируются единички или выпадают примерно через одинаковое количество испытаний.
P.s. Ты чем график строил? Excel?
-
Grif, молчи блин !
ты понимаешь что этот глюк игрокам только на руку, редкие вещи (% меньше 7,67 ) и события происходят чуть-чуть чаще )))
я вот лично знал о том что у нас так, просто почитав код атены, из теоретических соображений ))
правда думал что скачок происходит на 535 (а оказывается rand не до 65535 а до 32767)
:!: кстати ты уверен что на сервере используется такая же C-библиотека как у тебя?для тех кто не понял почему такой график - rand выдаёт значения равномерно но в коде атены для вычисления наступления событий используются условия типа if (rand() % 10000 < rate)
допустим максимальное число выдаваемое rand - 32767
тогда число меньше 767 будет получаться 4 разными спобобами а больше 767 - тремя
но график сероятности получить (rand() % 10000 < rate) всё равно будет не такой как нарисовано, плавный, без ступеньки. будет не лень - нарисуюполюбому это не совсем в тему сообщения, и к "неравномерности" не имеет отношения
-
Во-первых, я из 6-ти ни одной не заточил! Именно об этом речь. А во-вторых, из одной шапки заточить одну шанс 35%! А уж из 6 куда больше.
ещё раз, тебе не повезло. вероятность обломаться с 6 попыток не равна 0 и с тобой это произошло. если взять статистику по всем заточкам за неделю, то уверен, все вероятности будут в пределах погрешности.
а то что не повезло именно тебе... поверь никаких преференций кому-то в коде нет, просто боги к тебе немилостливы
-
@Sasha-san:
если вероятность выпадения вещи с монстра 0.1 % это вовсе не значит что все попытки запоинаются и с тысячного монстра выпадет вещь.Вот в этом-то и прикол, что попытки все запоминаются И мало того! Они повторяются вновь и вновь Только происходит это не специально, а, как я уже писал, из-за того, что мы имеем последовательность, которая пытается собой подменить равномерное распределение.
любой генератор псевдослучайных чисел именно что пытается выдать вовсе не случайную последовательность которая тем не менее имеет такое распределение, что вполне пожет "подменить" действительно случайную для практических целей.Удивительно, но никого не испугало то, что в этой циклической последовательности, может быть меньшее количество событий, соответствующих положительному исходу при испытании! В том, что цикла тут нет, никто еще меня не переубедил.
пугать никого не надо, знание - сила, незнание - страх.значит попытаюсь ответить аргументированно, во первых предположим что генератор псч ИМЕЕТ последовательность (скорее всего это так) и через некоторое время просто выдаёт энное число из таблички содержащей 32к чисел
и исход фактически хависит от порядкового номера числа в таблицетем не менее между двумя попытками вызова генератора, которые приходятся лично на тебя происходят тысячи его вызовов для рассчёта других пользователей. сотни людей круглосуточно бьют монстров а расчёт различных шансов происходит по нескольку раз за 1 удар.
то есть тот самый порядковый номер - это и есть истинно случайное число зависящее от нажатий кнопок тысячами пользователей и от сетевых лагов по всему миру.поскольку последовательность (деже если она есть) довольно таки хаотичная (это всё можно проверить) и благодаря ещё некоторым условиям (даже зная что rand%10000 равно 0 ты не знаешь выпало ли из rand 0 или 20000) предсказать исход следующего испытания невозможно
Я думаю, что все знают про эффект, когда в кино у машины колеса как бы не крутятся, а она едет?
аналогия совершенно неправильная. в кино оба процесса (вращение колеса и съёмка кадров) происходят с очень хорошей периодичностью, без дрожания.если колесо (равномерно вращающееся) освещать вспышками в случайные моменты времени то оно будет выглядеть размазанным.
осталось только 2 вопроса. во первых действительно ли на сервере период равен32к или 65к или, возможно 2ккк или же библиотека использует системный rand накапливающий истинно случайные события
и во вторых ЕСЛИ там период 32к можно потестить насколько равномерно эти числа распределены.. а то возможно чисел отвечающих за событие с вероятностью 0.01% слишком мало (или слишком много и не жалуйтесь потом если это пофиксят ^_^ )
-
По пунктам. Посчитайте вероятность того, что карта выпадет из 2 монстров подряд. История о таком должна быть одна, ну две максимум - за недолгую жизнь МОТРа... И одни должны быть легендами сервера.
к слову ДОЛЖНА у меня есть претензии
И историй таких слышал я немало - не меньше десятка.
а может всё же посчитать? вероятность выбить 2 карты подряд - 1 на 10^8. а сколько монстров убито за историю сервера?
по моим оценкам в час более миллиона то есть такое событие как выпадение 2 карт подряд может случаться раз в неделю и это совершенно нормально.А насчет ранвномерности распределения - если кто-то сможет в реальной жизни 10 раз подкинуть монетку, и все 10 раз выбить решку - я пожму его мужественную руку.
за 100 баксов и пиво возьмусь тебе это продемонстрировать, скорее всего за день управлюсь хоть и задолбаюсь ))
понимаешь, то что вероятность мала не даёт никаких ГАРАНТИЙ что это не произойдёт с первого раза, 5 раз подряд или если оно только что произошло то не произойдёт опять. или если оно не происходило давно то произойдёт скоро.
вероятность каждый раз одинаковая -
Sasha-san, я вижу, что мы совместными усилиями много добьемся В том числе, генератор исправят и карты будут падать еще реже ;))
Только в твоем объяснении имеется ошибочка. Ступенька в графике получается не для значений больше 767, а значний больше 2767 (а это уже соответствует 27.67%). За исключением сего бага мы имеем более-менее равномерное распределение, что даже удивительно
Мне лично кажется, что именно эту вещь давно пофиксили. Видимо в тот момент вещи стали выбиваться и точится реже! Именно потому, что раньше было как на графике, а сейчас иначе.
Жалко, что никто не хочет признаваться в реальном положении вещей
В заключении хочу сказать, что совсем не сложно сделать генератор намного более случайным. Как я уж предлагал, можно просто периодически менять параметры генератора на основе случайных временных интервалов. Нельзя же предсказать кто когда кнопочку нажмет или мышкой кликнет?! Вот эти значения и юзать.
-
@"ieshua":
Только в твоем объяснении имеется ошибочка. Ступенька в графике получается не для значений больше 767, а значний больше 2767 (а это уже соответствует 27.67%). За исключением сего бага мы имеем более-менее равномерное распределение, что даже удивительно
о, точно. только поскольку там проверка не if ( rand () % 10000 == rate)
а if ( rand () % 10000 < rate) то график надо проинтегрировать ))
а чтобы узнать во солько раз изменилась вероятность - на неё поделитьтолько ещё раз обращаю внимание, это зависит от использованной C-библиотеки. в нормальных юниксах (только что проверил)
#define RAND_MAX 0x7fffffffи период там 2^32 и генератор нелинейный