Title: Как получить случайное число из seed? Post by: OddEvenBets.com on May 10, 2018, 02:24:13 AM Всем кодерам привет!
Кто может подсказать идею, как можно сгенерировать случайное число из seed в заданном диапазоне. К примеру: Seed=2629bed0307ed45a36a2faabeaedd9eb1c2c91674c243babf13145ff2652b6c8 Range=25 random(Seed, Range). Есть идеи? Title: Re: Как получить случайное число из seed? Post by: kzv on May 10, 2018, 06:15:57 AM Всем кодерам привет! Кто может подсказать идею, как можно сгенерировать случайное число из seed в заданном диапазоне. К примеру: Seed=2629bed0307ed45a36a2faabeaedd9eb1c2c91674c243babf13145ff2652b6c8 Range=25 random(Seed, Range). Есть идеи? результ = (int)(первые4байта ( сха256(сид))) вхиле результ больше ранге результ= (int)(первые4байта ( сха256(результ))) Title: Re: Как получить случайное число из seed? Post by: OddEvenBets.com on May 10, 2018, 08:59:08 AM Всем кодерам привет! Кто может подсказать идею, как можно сгенерировать случайное число из seed в заданном диапазоне. К примеру: Seed=2629bed0307ed45a36a2faabeaedd9eb1c2c91674c243babf13145ff2652b6c8 Range=25 random(Seed, Range). Есть идеи? результ = (int)(первые4байта ( сха256(сид))) вхиле результ больше ранге результ= (int)(первые4байта ( сха256(результ))) Идея понятна. сид у меня и есть результат сха256.. если применим вхиле, то потом не смогу восстановить сид.. т.е. введя сид (первоначальный) результат будет не тот. может идея, из хэша вырезать все буквы.. получим 26290307453629129167424313145265268 и как-то с делением попробовать? Title: Re: Как получить случайное число из seed? Post by: kzv on May 10, 2018, 10:28:53 AM Всем кодерам привет! Кто может подсказать идею, как можно сгенерировать случайное число из seed в заданном диапазоне. К примеру: Seed=2629bed0307ed45a36a2faabeaedd9eb1c2c91674c243babf13145ff2652b6c8 Range=25 random(Seed, Range). Есть идеи? результ = (int)(первые4байта ( сха256(сид))) вхиле результ больше ранге результ= (int)(первые4байта ( сха256(результ))) Идея понятна. сид у меня и есть результат сха256.. если применим вхиле, то потом не смогу восстановить сид.. т.е. введя сид (первоначальный) результат будет не тот. может идея, из хэша вырезать все буквы.. получим 26290307453629129167424313145265268 и как-то с делением попробовать? Не понял: вы хотите иметь возможность обратного преобразовпния из рэндома в сид?? Боюсь, что взаимнооднозначное преобразование не получится... Числу из интервала 0..25 соответствует овердофига чисел из интервала 0...2^256 Title: Re: Как получить случайное число из seed? Post by: serezhkin on May 11, 2018, 02:44:26 PM Да всё просто.
мы раньше умножали предыдущее случайное число на 11 и прибавляли Pi, затем откидывали целую часть и получали случайное число до единицы. Code: man 2 rand Code: #include <stdlib.h> Title: Re: Как получить случайное число из seed? Post by: OddEvenBets.com on May 13, 2018, 05:57:14 AM Не понял: вы хотите иметь возможность обратного преобразовпния из рэндома в сид?? Боюсь, что взаимнооднозначное преобразование не получится... Числу из интервала 0..25 соответствует овердофига чисел из интервала 0...2^256 нет, понятно что обратное преобразование не возможно.. Я имел ввиду что бы по сиду, любой пользователь мог получить то же случайное число и мог проверить. (в 1-2 операции без всяких циклов, т.к. не каждый дружит с кодингом) с делением по модулю вроде получилось нормально. Title: Re: Как получить случайное число из seed? Post by: Coin-1 on May 14, 2018, 02:44:37 PM нет, понятно что обратное преобразование не возможно.. Обычно у каждого псевдослучайного алгоритма есть функция init(seed) и далее идёт множество последовательных функций rand(), связанных друг с другом через созданный инстанс. По умолчанию seed - это таймстамп в микросекундах, хотя это считается небезопасным. Если seed будет заранее известен, то первое и последующие псевдослучайные числа будут всегда одними и теми же. Что подразумевается под Range?Я имел ввиду что бы по сиду, любой пользователь мог получить то же случайное число и мог проверить. (в 1-2 операции без всяких циклов, т.к. не каждый дружит с кодингом) Title: Re: Как получить случайное число из seed? Post by: neiros on May 14, 2018, 03:20:17 PM Что такое seed я не знаю, но из sha256, точнее от его последней части, случайное число какого угодно диапазона я получаю таким образом: https://github.com/neiros/---TTC---/blob/TTC-all-Lyra2REv2/src/miner.cpp#L442 https://github.com/neiros/---TTC---/blob/TTC-all-Lyra2REv2/src/miner.cpp#L447 https://github.com/neiros/---TTC---/blob/TTC-all-Lyra2REv2/src/miner.cpp#L461 Title: Re: Как получить случайное число из seed? Post by: Anrxa on June 27, 2018, 08:44:59 PM нет, понятно что обратное преобразование не возможно.. Обычно у каждого псевдослучайного алгоритма есть функция init(seed) и далее идёт множество последовательных функций rand(), связанных друг с другом через созданный инстанс. По умолчанию seed - это таймстамп в микросекундах, хотя это считается небезопасным. Если seed будет заранее известен, то первое и последующие псевдослучайные числа будут всегда одними и теми же. Что подразумевается под Range?Я имел ввиду что бы по сиду, любой пользователь мог получить то же случайное число и мог проверить. (в 1-2 операции без всяких циклов, т.к. не каждый дружит с кодингом) В PHP например это функция mt_srand(). Главное чтобы у клиентов был один и тот же алгоритм генерации псевдослучайных чисел. |