Результаты опроса: Никаких вопросов:)

Голосовавшие
13. Вы ещё не участвовали в этом опросе
  • Благодарю, %Username%, мне всё понятно!

    3 23.08%
  • Ничего не понятно, но очень интересно!

    5 38.46%
  • Я сюда, а тут такое О_О

    2 15.38%
  • У меня свой вариант ответа, но я вам его не скажу!

    5 38.46%
Опрос с выбором нескольких вариантов ответа.
Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 28 из 28

Тема: Невероятная Закалка и увлекательная математика

  1. #21
    Гость Артемиса
    Регистрация
    09.03.2020
    Сообщений
    0
    Цитата Сообщение от MidNightmare Посмотреть сообщение
    Ну как так-то? Если задать sigma=.5 или наоборот sigma=.05 ничего не изменится? =:О
    И в любом случае это эмуляция сразу серии экспериментов, она тут ни к чему.
    Показать
    Совершенно верно, не изменится:) Но, оказывается я все равно ошибся и перепутал местами в какой интервал должна была попасть случайная величина(рукалицо!!!),
    вот нормальные результаты, с разными сигмами:

    sigma = 0.5:
    Вероятность попасть в [middle_value-sigma*1.07;middle_value+sigma*1.07] ~ 70%
    Всего опытов: 1000000
    Количество попыток в опыте: 10
    0 одинаковых событий подряд : 0
    1 одинаковых событий подряд : 1635525
    2 одинаковых событий подряд : 1686235
    3 одинаковых событий подряд : 1306499
    4 одинаковых событий подряд : 793818
    5 одинаковых событий подряд : 430123
    6 одинаковых событий подряд : 220641
    7 одинаковых событий подряд : 105147
    8 одинаковых событий подряд : 44516

    sigma = 0.05:
    Вероятность попасть в [middle_value-sigma*1.07;middle_value+sigma*1.07] ~ 70%
    Мат. ожидание: 0.5 СКО: 0.05
    Всего опытов: 1000000
    Количество попыток в опыте: 10
    0 одинаковых событий подряд : 0
    1 одинаковых событий подряд : 1635572
    2 одинаковых событий подряд : 1687607
    3 одинаковых событий подряд : 1304926
    4 одинаковых событий подряд : 798652
    5 одинаковых событий подряд : 428807
    6 одинаковых событий подряд : 219936
    7 одинаковых событий подряд : 104474
    8 одинаковых событий подряд : 44614

    sigma=1000000:
    Вероятность попасть в [middle_value-sigma*1.07;middle_value+sigma*1.07] ~ 70%
    Мат. ожидание: 0.5 СКО: 1000000
    Всего опытов: 1000000
    Количество попыток в опыте: 10
    0 одинаковых событий подряд : 0
    1 одинаковых событий подряд : 1640333
    2 одинаковых событий подряд : 1682800
    3 одинаковых событий подряд : 1304824
    4 одинаковых событий подряд : 795788
    5 одинаковых событий подряд : 430075
    6 одинаковых событий подряд : 220084
    7 одинаковых событий подряд : 104708
    8 одинаковых событий подряд : 44331

    Под одинаковыми событиями подразумевается тот самый 70% шанс попасть нетуда
    Сами убедитесь, вот исправленный код:
    Код:
    import random
    
    max_list = []
    times_count = 1000000  # число подходов
    try_count = 10  # число попыток в подходе
    # просто комментарий
    for i in range(times_count):
        maxcount = 0
        count = 0
        for j in range(try_count):
            middle_value = 0.5  # центральное значение случайной величины
            sigma = 1000000 # стандартное отклонение случайной величины
            roll = random.normalvariate(middle_value, sigma)
            roll_low_limit = middle_value - sigma * 1.07  
            roll_high_limit = middle_value + sigma * 1.07  
            if roll > roll_low_limit and roll < roll_high_limit:  # если не вышли за +-sigma * 1.07
                count += 1 # неудача
            else:  # удача
                if maxcount < count:
                    maxcount = count
                    count = 0
            if maxcount:
                max_list.append(maxcount)
                # print("неудач подряд:", maxcount)
                pass
    max_no_success = max(max_list)
    print('Вероятность попасть в [middle_value-sigma*1.07;middle_value+sigma*1.07] ~ 70%')
    print('Мат. ожидание: ', middle_value, 'СКО: ', sigma)
    print('Всего опытов:', times_count)
    print('Количество попыток в опыте: ', try_count)
    for i in range(max_no_success):
        print('%d одинаковых событий подряд : %d ' %
          (i, max_list.count(i)))
    Теперь получилось (и я надеюсь что в этот раз уже нигде не ошибся) что экспериментальная вероятность 6-кратного выпадения события с вероятностью 70% будет приблизительно 220084/1000000=0.220084=22%. Что всего то в 2 раза больше рассчетной 0.7^6 = 0.11764899999999996=11.76%
    Цитата Сообщение от MidNightmare Посмотреть сообщение
    Нет. Тут надо использовать random.uniform(0, 1) потому, что одиночная случайная величина распределена равномерно. Я если честно, код в самом начале не прочел, и думал, что гауссиан служит для иллюстрации и сравнения результатов эмуляции с теоретическим идеалом, а не для ее генерации. :)
    Показать
    У меня не получается представить себе как реализовать ролл с каким-либо шансом на равномерно распределенной случайной величине поскольку все значения этой величины равновероятны. Наверное я подустал и чего-то не понимаю, подскажите:)

    Upd. Мне показалась интересной ваша идея о том что куча подходов по N попыток это лишнее, и я поправил код еще разок.
    Результаты не стали близки к расчетной вероятности и расчетная стала превышать в 10 раз экспериментальную...

    всё под спойлером
    1кк бросков без подходов:
    Вероятность попасть в [middle_value-sigma*1.07;middle_value+sigma*1.07] ~ 70%
    Мат. ожидание: 0.5 СКО: 1000000
    Всего опытов: 1000000
    0 одинаковых событий подряд : 0
    1 одинаковых событий подряд : 57703
    2 одинаковых событий подряд : 41528
    3 одинаковых событий подряд : 29615
    4 одинаковых событий подряд : 21259
    5 одинаковых событий подряд : 15094
    6 одинаковых событий подряд : 10851
    7 одинаковых событий подряд : 7837
    8 одинаковых событий подряд : 5482
    9 одинаковых событий подряд : 4022
    10 одинаковых событий подряд : 2841
    11 одинаковых событий подряд : 2054
    12 одинаковых событий подряд : 1476
    13 одинаковых событий подряд : 1040
    14 одинаковых событий подряд : 737
    15 одинаковых событий подряд : 531
    16 одинаковых событий подряд : 332
    17 одинаковых событий подряд : 318
    18 одинаковых событий подряд : 213
    19 одинаковых событий подряд : 139
    20 одинаковых событий подряд : 116
    21 одинаковых событий подряд : 78
    22 одинаковых событий подряд : 45
    23 одинаковых событий подряд : 40
    24 одинаковых событий подряд : 21
    25 одинаковых событий подряд : 15
    26 одинаковых событий подряд : 17
    27 одинаковых событий подряд : 5
    28 одинаковых событий подряд : 7
    29 одинаковых событий подряд : 7
    30 одинаковых событий подряд : 4
    31 одинаковых событий подряд : 5
    32 одинаковых событий подряд : 3
    33 одинаковых событий подряд : 4
    34 одинаковых событий подряд : 2

    Код:
    import random
    
    max_list = []
    times_count = 1000000  # число подходов
    try_count = 1000000  # число попыток в подходе
    # просто комментарий
    maxcount = 0
    count = 0
    for i in range(times_count):
        middle_value = 0.5  # центральное значение случайной величины
        sigma = 1000000 # стандартное отклонение случайной величины
        roll = random.normalvariate(middle_value, sigma)
        roll_low_limit = middle_value - sigma * 1.07
        roll_high_limit = middle_value + sigma * 1.07
        if roll > roll_low_limit and roll < roll_high_limit:  # если не вышли за +-sigma * 1.07
            count += 1  # неудача
        else:  # удача
            if maxcount < count:
                maxcount = count
                count = 0
        if maxcount:
            max_list.append(maxcount)
            maxcount=0
            # print("неудач подряд:", maxcount)
            pass
    max_no_success = max(max_list)
    print('Вероятность попасть в [middle_value-sigma*1.07;middle_value+sigma*1.07] ~ 70%')
    print('Мат. ожидание: ', middle_value, 'СКО: ', sigma)
    print('Всего опытов:', try_count)
    # print('Количество попыток в опыте: ', try_count)
    for i in range(max_no_success):
        print('%d одинаковых событий подряд : %d ' %
          (i, max_list.count(i)))
    Как всегда - спасибо:)
    Последний раз редактировалось Username; 10.11.2020 в 20:30.

  2. #22
    Наследник Эсдо
    Регистрация
    27.09.2019
    Сообщений
    579
    Цитата Сообщение от Username Посмотреть сообщение
    Совершенно верно, не изменится:)
    Показать
    Ну, в новом коде да :) В старом сигма из границ была переменной, а и из параметров гауссиана константой. Если выражать их через одну и ту же переменную, естественно сигма будет играть роль масштаба и вероятность попадания в некий интервал, выраженный в тех же сигмах будет плюс-минус одинаковой.

    Цитата Сообщение от Username Посмотреть сообщение
    У меня не получается представить себе как реализовать ролл с каким-либо шансом на равномерно распределенной случайной величине поскольку все значения этой величины равновероятны. Наверное я подустал и чего-то не понимаю, подскажите:)
    Показать
    А что не так-то? Берете кубик, прямо физический от настолки и кидаете. Все значения равновероятны, но выпадает в каждой попытке какое-то одно. Если выпадет 5 или 6 - заточились. Если меньше - облом. (Тут правда шанс 33,(3) :))
    В коде будет примерно так (на питоне не пишу, так что за синтаксис не ручаюсь)
    count = 0
    bad_count = 0
    good_count = 0
    for i in range(try_count):
    roll = random.uniform(0, 1)
    if roll < 0,7
    count += 1 # неудача
    else: # удача
    # print("заточились с ", " раза")
    count = 0
    i = try_count

    if count > 0
    # print("не заточились")
    bad_count += 1
    else
    good_count += 1

    ну и в цикл завернуть. А дальше смотрим сколько bad, а сколько good

    з.ы. сдвиги жрет сволочь, но вроде по смыслу понятно. И чего в питоне вместо нормальных скобок табуляция?
    Последний раз редактировалось MidNightmare; 10.11.2020 в 21:07.

  3. #23
    Гость Артемиса
    Регистрация
    09.03.2020
    Сообщений
    0
    ок, идею понял, random.uniform(0,1) вернет float от 0 до 1, если >0.7 то удача, если нет то неудача(ну или наоборот в нашем случае), мне такой подход показался заведомо неверным так как удача неудача сводится к "50/50" ибо все значения равновероятны, но почему нет, позже проверю, если моя гипотеза верна то от 1к опытов к 1к опытов результаты не будут друг с другом коррелировать:)

    - - - Добавлено - - -

    Потестил на обычном роле, без нормального закона. Я был неправ об отсутствии корреляции от тысяче к тысяче опытов, корреляция есть, по крайней мере при принятых условиях (70% неудача, число подходов 1к единоразово), причем корреляция такая же как и при роллах сгенерированных по нормальному закону, да и в целом оба подхода оказались эквиваленты по результатам:)
    результат при roll=random.uniform(0,1) и Код :

    результаты:
    Вероятность неудачной закалки 70%
    Всего опытов: 1000000
    0 неудач подряд произошло 0 раз
    1 неудач подряд произошло 62650 раз
    2 неудач подряд произошло 44144 раз
    3 неудач подряд произошло 30972 раз
    4 неудач подряд произошло 21541 раз
    5 неудач подряд произошло 15234 раз
    6 неудач подряд произошло 10527 раз
    7 неудач подряд произошло 7522 раз
    8 неудач подряд произошло 5238 раз
    9 неудач подряд произошло 3557 раз
    10 неудач подряд произошло 2544 раз
    11 неудач подряд произошло 1757 раз
    12 неудач подряд произошло 1266 раз
    13 неудач подряд произошло 854 раз
    14 неудач подряд произошло 616 раз
    15 неудач подряд произошло 438 раз
    16 неудач подряд произошло 275 раз
    17 неудач подряд произошло 200 раз
    18 неудач подряд произошло 153 раз
    19 неудач подряд произошло 93 раз
    20 неудач подряд произошло 71 раз
    21 неудач подряд произошло 62 раз
    22 неудач подряд произошло 30 раз
    23 неудач подряд произошло 21 раз
    24 неудач подряд произошло 13 раз
    25 неудач подряд произошло 8 раз
    26 неудач подряд произошло 12 раз
    27 неудач подряд произошло 3 раз
    28 неудач подряд произошло 4 раз
    29 неудач подряд произошло 3 раз
    30 неудач подряд произошло 2 раз
    31 неудач подряд произошло 1 раз
    32 неудач подряд произошло 0 раз


    код:
    Код:
    import random
    
    max_list = []
    times_count = 1000000  # число попыток
    maxcount = 0
    count = 0
    for i in range(times_count):
        roll = random.uniform(0,1)
        if roll < 0.7:
            count += 1  # неудача
        else:  # удача
            if maxcount < count:
                maxcount = count
                count = 0
        if maxcount:
            max_list.append(maxcount)
            maxcount = 0
            # print("неудач подряд:", maxcount)
            pass
    max_no_success = max(max_list)
    print('Вероятность неудачной закалки 70%')
    # print('Мат. ожидание: ', middle_value, 'СКО: ', sigma)
    print('Всего опытов:', times_count)
    # print('Количество попыток в опыте: ', try_count)
    for i in range(max_no_success):
        print('%d неудач подряд произошло %d раз' %
              (i, max_list.count(i)))



    результат при roll=random.normalvariate(mean, sigma) и код:

    результаты:
    Вероятность неудачной закалки ~ 70%
    Мат. ожидание: 0.5 СКО: 1000000
    Всего опытов: 1000000
    0 неудач подряд произошло 0 раз
    1 неудач подряд произошло 57761 раз
    2 неудач подряд произошло 41443 раз
    3 неудач подряд произошло 29501 раз
    4 неудач подряд произошло 20928 раз
    5 неудач подряд произошло 15204 раз
    6 неудач подряд произошло 11072 раз
    7 неудач подряд произошло 7806 раз
    8 неудач подряд произошло 5558 раз
    9 неудач подряд произошло 3932 раз
    10 неудач подряд произошло 2845 раз
    11 неудач подряд произошло 2019 раз
    12 неудач подряд произошло 1506 раз
    13 неудач подряд произошло 1027 раз
    14 неудач подряд произошло 710 раз
    15 неудач подряд произошло 547 раз
    16 неудач подряд произошло 349 раз
    17 неудач подряд произошло 320 раз
    18 неудач подряд произошло 200 раз
    19 неудач подряд произошло 145 раз
    20 неудач подряд произошло 103 раз
    21 неудач подряд произошло 68 раз
    22 неудач подряд произошло 64 раз
    23 неудач подряд произошло 27 раз
    24 неудач подряд произошло 27 раз
    25 неудач подряд произошло 29 раз
    26 неудач подряд произошло 15 раз
    27 неудач подряд произошло 9 раз
    28 неудач подряд произошло 11 раз
    29 неудач подряд произошло 8 раз
    30 неудач подряд произошло 5 раз
    31 неудач подряд произошло 3 раз
    32 неудач подряд произошло 1 раз
    33 неудач подряд произошло 2 раз
    34 неудач подряд произошло 1 раз
    35 неудач подряд произошло 2 раз
    36 неудач подряд произошло 1 раз
    37 неудач подряд произошло 1 раз
    38 неудач подряд произошло 0 раз


    код:
    Код:
    import random
    
    max_list = []
    times_count = 1000000  # число подходов
    # просто комментарий
    maxcount = 0
    count = 0
    for i in range(times_count):
        middle_value = 0.5  # центральное значение случайной величины
        sigma = 1000000  # стандартное отклонение случайной величины
        roll = random.normalvariate(middle_value, sigma)
        roll_low_limit = middle_value - sigma * 1.07
        roll_high_limit = middle_value + sigma * 1.07
        if roll > roll_low_limit and roll < roll_high_limit:  # если не вышли за +-sigma * 1.07
            count += 1  # неудача
        else:  # удача
            if maxcount < count:
                maxcount = count
                count = 0
        if maxcount:
            max_list.append(maxcount)
            maxcount = 0
    max_no_success = max(max_list)
    print('Вероятность неудачной закалки ~ 70%')
    print('Мат. ожидание: ', middle_value, 'СКО: ', sigma)
    print('Всего опытов:', times_count)
    for i in range(max_no_success):
        print('%d неудач подряд произошло %d раз' %
              (i, max_list.count(i)))


    Если, для разнообразия, взять 7 неудач подряд, то экспериментальные вероятности:
    Код:
    Pэксп.обычн.броски=7522 / 1000000 = 0.007522 = 0.7522 %
    Pэксп.броски.норм.закон=7806 / 1000000 = 0.007806 = 0.7806 %
    Рассчётная вероятность 7 неудач подряд при 70% шансе неудачи:
    Код:
    Pрасч.=0.7^7 = 0.0823543 = 8,23543 %
    Такие вот дела.

    - - - Добавлено - - -

    На основании полученных экспериментальных данных можно делать выводы типа:
    Для того чтобы закалить предмет с 10 на 11 с вероятностью 100%- 0.7522% =99.2478% (вычитаем из 100% вероятность 7 неудач) нужно сделать за раз 8 попыток.
    Конечно, мы не знаем какой именно алгоритм был выбран для реализации генератора псевдо-случайных числе в lostark, но отталкиваться от вероятности полученной на экспериментальных данных, я считаю, будет более адекватно чем пользоваться расчетной вероятностью:)

    - - - Добавлено - - -

    Наткнулся на увлекательную статью на хабре:)
    Если кому интересно - вот она
    Последний раз редактировалось Username; 11.11.2020 в 13:39.

  4. #24
    Гость Артемиса Аватар для Vatochka
    Регистрация
    21.10.2019
    Адрес
    ДС
    Сообщений
    15
    Разговор в пользу бедных, имхо. Вы, я надеюсь, понимаете, что проводить исследования, да еще в области теории вероятностей, не имея никакой информации об объекте исследований, бред сам по себе. Есть миллион событий и условностей, которые можно использовать для начальной затравки ГСЧ, от времени входа в игру, до того с какой стороны персонаж подошел к НПЦ и сколько у него монеток в рюкзаке. Даже если там идеальный ГСЧ с ровно таким же алгоритмом, как у топик стартера, все равно не удастся получить одинаковых распределений вероятностей, т.к. оборудование как минимум разное, абсолютно неизвестны начальные условия инициализации ГСЧ, как я и писал выше. А атакой в лоб можно потратить всю жизнь на поиск этого единственно верного алгоритма и не найти его

  5. #25
    Избранник Руфеона
    Регистрация
    10.11.2019
    Сообщений
    1,129
    Цитата Сообщение от Vatochka Посмотреть сообщение
    Разговор в пользу бедных
    Показать
    В пользу богатых, покупки бедным основаны обычно на 2х вещах, это необходимость и эффективность. И из последнего найди персонажа своего же 1050 скажем ГСа)
    Когда я нашел то его рост от заточки показался не стоящим того. То есть 900й и 1050й отличаются процентов на 15, при этом заточка на эти 150 вобще не детский ценник имеет для такого маленького роста.

  6. #26
    Гость Артемиса Аватар для Vatochka
    Регистрация
    21.10.2019
    Адрес
    ДС
    Сообщений
    15
    Цитата Сообщение от u_771126365 Посмотреть сообщение
    То есть 900й и 1050й отличаются процентов на 15, при этом заточка на эти 150 вобще не детский ценник имеет для такого маленького роста.
    Показать
    Ну естественно =) Это называется преднамеренное затягивание прогресса в игре. Т.к. игра у нас про циферки и ЧСВ, лол. Вот разрабы и усложнили этот процесс на 900+ к примеру. Контент то им лень завозить новый, а кушоть хоцца

  7. #27
    Избранник Руфеона
    Регистрация
    10.11.2019
    Сообщений
    1,129
    Цитата Сообщение от Vatochka Посмотреть сообщение
    Это называется преднамеренное затягивание прогресса в игре.
    Показать
    Я не считаю это рабочим вариантом для наличия хорошего онлайна. Как бы в мире в целом очень много способов для достижения целей, но почти все они не применяются потому что чем то негативят сильно. Но видимо в данном случае это никого не смущает. И если ты тыкаешь человеку в лицо тем, что его усилия и прогресс бесполезны, наверное это не очень умно.

  8. #28
    Наследник Эсдо
    Регистрация
    27.10.2019
    Сообщений
    397
    Цитата Сообщение от Username Посмотреть сообщение
    мы не знаем какой именно алгоритм был выбран для реализации генератора псевдо-случайных числе в lostark
    Показать
    Вы всерьёз считаете, что известные своей ленью геймдевы (особенно из региона откуда игра родом) берут что-то отличающееся от штатного RNG/ГСЧ, свой пишут? Сами то в это верите?

    Цитата Сообщение от Vatochka Посмотреть сообщение
    Ну естественно =) Это называется преднамеренное затягивание прогресса в игре. Т.к. игра у нас про циферки и ЧСВ, лол. Вот разрабы и усложнили этот процесс на 900+ к примеру. Контент то им лень завозить новый, а кушоть хоцца
    Показать
    Там на самом деле довольно нелинейно растёт это усложнение - сперва где-то от 915 до 960, затем 960-990-1005, далее 1005-1050 ну и затем 1050+ для всяких рисовых фэйзкланов с соокс-ами и супердоусами.
    А ещё есть достаточно эмпирическое, но всё же соотношение "сколько в игру влито и на сколько она выглядит/играется", первое нагугливается несложно (порядка 100 ярдов южнокорейских вон на момент старта ОБТ в корее было влито в проект что на тот момент составляло порядка 88М зелени) а второе хоть и достаточно субъективно но всё же.
    'Never argue with an idiot. They will only bring you down to their level and beat you with experience.'

Страница 3 из 3 ПерваяПервая 123

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •