Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Ищу наиболее естественный seed random алгоритм. (http://www.flasher.ru/forum/showthread.php?t=177243)

Tr1te 27.03.2012 22:08

Ищу наиболее естественный seed random алгоритм.
 
Посоветуйте, пожалуйста, наиболее точный seed randomizer алгоритм.
Требования простые... :)
Чтобы был наиболее естественным.

Последний, который посмотрел, самый простой и быстрый, и наиболее естественно выглядящий генератор выглядит так:

Код AS3:

curSeed = (curSeed * 16807) % 2147483647;
return curSeed / 0x7FFFFFFF + 0.000000000233;


strangedk 27.03.2012 22:33

Из текущих секунд доставать, например

Tr1te 27.03.2012 22:48

Эй, каких секунд, надо же Seed random.

strangedk 27.03.2012 23:15

прощу прощения, прочитал как "мне нужен мега случайный рандомайзер" :)

Котяра 27.03.2012 23:50

Цитата:

естественно выглядящий
А можно более формализированные критерии?

Tr1te 27.03.2012 23:58

Конечно...
Выше упомянотому генератору ставлю вероятность выпадения нужного числа 0.000026% что равно 1/3841314.
Делаю цикл из 3841314 итерации, и смотрю сколько раз выпало число меньше 0.000026, и это число выпадает больше 1 раза, я бы даже сказал больше 30 раз. Как то многовато. В среднем от 20-40. Хотелось бы видеть значение максималбно приближенное к 1.

wvxvw 28.03.2012 02:45

Я не уверен откуда алгоритм, но есть предчувствие, что в оригинале использовался double а не float. Поэтому и результат такой.
А нужно это для криптографии, или для просчета каких-нибудь игровых вещей, где предсказуемость не играет роли? Я просто думал, а что если просто найти один сид, который удовлетворяет условию и его и использовать, если конечно, предсказуемость не важна.

Tr1te 28.03.2012 09:45

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

Добавлено через 1 час 23 минуты
PS: Что-то я наврал, по поводу выпадения "В среднем от 20-40" при шансе 1/3841314. До этого считал на глаз, значений было больше 5 и я уже даже не сильно обращал внимание на точное кол-во. Сейчас посчитал точно, и все генераторы в среднем выдают от 90-110 выпадений, при шансе 1/3841314. Лучшие выдают от 90-100.

И решение как бы очевидное, чтобы получить шанс 1/3841314, надо просто пороговое значение (0.000026%) разделить еще на 100, и получаю то что надо. Но вот только я задумался, а в жизни то как, может 100 раз выпадение это так и должно быть? Бред...

i.o. 28.03.2012 11:13

http://en.wikipedia.org/wiki/Xorshift

maxkar 28.03.2012 11:22

Цитата:

Лучшие выдают от 90-110.
Они правы!

Вы не учитываете, что 1 == 100%, отсюда и проблема. 1/3841314 == 0.000026 == 0.0026%


Часовой пояс GMT +4, время: 11:55.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.