Как сделать нормальный рандом? А то не дело когда несколько раз подряд одни и те же комбинации выпадают...

Принятый ответ

prog:
ArchOracle, покажи свой код, мне почему-то кажется что дело не только в рандоме...
Создал новую карту, чисто чтобы проверить. И что думаете? Рандом нормально работает!
Вне синематика рандом работает правильно. Внутри - каким-то фиксированным образом.
Почему? Не ясно. Впрочем, как решить проблему я понял.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
32
5 лет назад
0
ArchOracle, ну задать RamdomSeed реально случаным числом, к примеру погрешностью вейта.
0
10
5 лет назад
0
quq_CCCP:
ArchOracle, ну задать RamdomSeed реально случаным числом, к примеру погрешностью вейта.
В варике можно задавать зерно рандома? А как?)
А вообще, у меня проблема с тем, что много раз одни и те же комбинации выпадают.
Генерирую пять чисел от 1 до 3. И эта пятёрка из раза в раз одинакова. Даже если выйти из варика, зайти и запустить карту снова, то тоже так будет.
0
32
5 лет назад
0
0
10
5 лет назад
0
Bergi_Bear:
фиксированный случайный разброс
Галочка снята в параметрах редактора. И такое поведение рандома наблюдается и при запуске карты извне редактора.
2
32
5 лет назад
Отредактирован quq_CCCP
2
native SetRandomSeed takes integer seed returns nothing
А так же смотреть текущий сид можно.
0
26
5 лет назад
0
0
28
5 лет назад
0
Hate:
Вопрос не в этом.
0
24
5 лет назад
0
А вообще, у меня проблема с тем, что много раз одни и те же комбинации выпадают.
Генерирую пять чисел от 1 до 3.
Обычное дело когда рандом на коротком диапазоне.
Попробуй брать диапазон от 0 до 100 и остаток от деления на 3.
0
10
5 лет назад
0
prog:
А вообще, у меня проблема с тем, что много раз одни и те же комбинации выпадают.
Генерирую пять чисел от 1 до 3.
Обычное дело когда рандом на коротком диапазоне.
Попробуй брать диапазон от 0 до 100 и остаток от деления на 3.
Такая же ситуация.
Сами пятёрки изменились, но они всё равно одинаковые.
0
28
5 лет назад
0
Такая же ситуация.
А Seed помог?
quq_CCCP:
ну задать RamdomSeed реально случаным числом, к примеру погрешностью вейта.
Можно тут поподробнее?
0
10
5 лет назад
Отредактирован ArchOracle
0
А Seed помог?
Я не совсем понял как его смотреть...
>set udg_random_seed = GetRandomSeed()
Делал так, по аналогии с установкой зерна, но так ошибки выдаются (одна).
Кроме того, не совсем понятно откуда брать случайное зерно.
Пытаюсь сейчас разобраться с погрешностями вейта, потом напишу что как получилось.
На счёт погрешностей вейта. Они есть, но не уверен на счёт достаточности.
Брал циклический триггер с периодичностью в одну миллионную секунды и считал сколько циклов будет пока длится вейт(0.00)
0
32
5 лет назад
0
ArchOracle, а что если сделать рулеткой? например какой то таймер (например 0,13) крутит по кругу 123123123123 и записывает в переменную, а в разный момент времени обращаться к этой переменной и её результат записывать, так же учитывать предыдущее значение не давай выбросить два одинаковых подряд (оч низкий шанс), + добавить в рандомизатор текущее игровой время, если же вы пытаетесь получить в разное время, в таком случае шансы 1 на миллион что у вас 2 раза подряд выпадет, 11223 и 11223
0
17
5 лет назад
0
Знаю способ смотреть сид через реплей.
Недавно пытался переназначить его функцией во время init, но ни к чему оно не привело, сид как был рандомный так и остался.
0
10
5 лет назад
0
Bergi_Bear:
ArchOracle, а что если сделать рулеткой? например какой то таймер (например 0,13) крутит по кругу 123123123123 и записывает в переменную, а в разный момент времени обращаться к этой переменной и её результат записывать, так же учитывать предыдущее значение не давай выбросить два одинаковых подряд (оч низкий шанс), + добавить в рандомизатор текущее игровой время, если же вы пытаетесь получить в разное время, в таком случае шансы 1 на миллион что у вас 2 раза подряд выпадет, 11223 и 11223
Мне на старте игры нужно случайную способность из списка выдать.
И каждый раз у меня одни и те же способности получаются.
Да, я выводил генерируемые числа, проблема именно в рандоме.
0
27
5 лет назад
0
ArchOracle, Решается двумя действиями в триггерах
0
32
5 лет назад
0
ну кроме вейта еще вроде погрешность деления, 22\7 будет или не будет равно 22\7
0
17
5 лет назад
0
Берёте 2 рандомных числа, делаете луп на убивание потока делением одного на другое.
Сколько раз прокрутится до того как упадёт - вот вам и сид
0
24
5 лет назад
0
ArchOracle, покажи свой код, мне почему-то кажется что дело не только в рандоме...
0
27
5 лет назад
Отредактирован Феникс
0
Была трабла с рандомным кол-вом золота при подборе юнитом, решил так:
Помочь должно.

Разброс был нужен сугубо мне, это не обязательно
Загруженные файлы
0
10
5 лет назад
Отредактирован ArchOracle
0
prog:
ArchOracle, покажи свой код, мне почему-то кажется что дело не только в рандоме...
Создал новую карту, чисто чтобы проверить. И что думаете? Рандом нормально работает!
Вне синематика рандом работает правильно. Внутри - каким-то фиксированным образом.
Почему? Не ясно. Впрочем, как решить проблему я понял.
Загруженные файлы
Принятый ответ
0
32
5 лет назад
0
PT153:
Такая же ситуация.
А Seed помог?
quq_CCCP:
ну задать RamdomSeed реально случаным числом, к примеру погрешностью вейта.
Можно тут поподробнее?
Вейты имеют погрешность, чем выше вейт тем сильнее, она всегда разная +-, достаточно просто запустить таймер и вейт и смотреть сколько времени прошло по таймеру после вейта, вы удивитесь но там будут чудеса, вейт 0.00 сек на деле будет 0.1-0.2 и так далее.
0
10
5 лет назад
0
quq_CCCP:
PT153:
Такая же ситуация.
А Seed помог?
quq_CCCP:
ну задать RamdomSeed реально случаным числом, к примеру погрешностью вейта.
Можно тут поподробнее?
Вейты имеют погрешность, чем выше вейт тем сильнее, она всегда разная +-, достаточно просто запустить таймер и вейт и смотреть сколько времени прошло по таймеру после вейта, вы удивитесь но там будут чудеса, вейт 0.00 сек на деле будет 0.1-0.2 и так далее.
Да, поэкспериментировав с ними я это заметил)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.