Другие языки программирования и технологии
Как организовать псевдослучайные числа ?
Если есть какие-то возражения против стандартной функции, можно написать свою. Детальный разбор алгоритмов получения псевдослучайных чисел есть в третьем томе Кнута.
А чего вы капризничаете? Во всех яп есть генератор псч. Если вы хотите нечто альтернативное, то и выражайтесь конкретнее
Павел Греков
не во всех
Использовать встроенную в твой язык программирования функцию. И она там 100% есть.
А если самому, то, например, берешь текущие дату/время в виде текстовой строки, считаешь хеш этой строки (md5, или sha1), берешь нужное кол-во 16-ричных цифр из средины получившегося хеша и преобразовываешь их в число.
А если самому, то, например, берешь текущие дату/время в виде текстовой строки, считаешь хеш этой строки (md5, или sha1), берешь нужное кол-во 16-ричных цифр из средины получившегося хеша и преобразовываешь их в число.
Павел Греков
КАК это сделать, не надо готовое решение
Из системного времени оно получается, если вам нужно знать, как оно работает.
Помнится для программируемых калькуляторов 80-х годов применялись методы генерации случайных чисел в диапазоне 0, 1: задается наугад первое число x (0<x<1), а следующие получались из предыдущего по формуле x= Д (11х+Пи), где Д означает дробная часть числа. Для получения чисел в диапазоне a,b =a+(b-a)x
Тут посмотрите: http://habrahabr.ru/post/132217/
Вабчета, не очень простая задача, если серьезно подходить. Есть прикольный способ: брать коды символов, из осмысленного текста, и нормировать, как надо. Тока текстовый файл с настоящим, связанным текстом, не программный код.
Вабчета, не очень простая задача, если серьезно подходить. Есть прикольный способ: брать коды символов, из осмысленного текста, и нормировать, как надо. Тока текстовый файл с настоящим, связанным текстом, не программный код.
Стас Сидоренко
На хабре чувак мутил генератор, снимая шумы со звуковой карты. Никаких текстов не нужно. Хотя одной книгой "Война и Мир" можно дофига псевдорандома накрутить =)
Берёшь какое-нибудь неадекватное число:
unsigned int seed = 87578954;
И еще одно, чтобы растянуть время до повтора значений на подольше и делаешь с ним шляпу какую-нибудь, чтобы оно отличалось от папки:
unsigned int old_seed = (seed>>4) * (seed>>11);
( >> и << побитовый сдвиг, загугли если что)
Творишь с seed всякие непотребства:
seed = (seed*seed)%123456;
(% - остаток от деления)
В принципе в seed уже что-то вроде рандома валяется, можешь забирать от него остаток для личных целей, повторяя предыдущую операцию перед каждым вызовом.
И добавляешь условие (тоже со всякой фигней):
if (seed<1000) { seed = (old_seed*old_seed)>>4 + seed*old_seed + old_seed<<8; old_seed = (old_seed* old_seed) % 592394; }
Никакой криптостойкости, но и никакого гемора со сложными алгоритмами + достаточно долгий проход до повторения серии.
unsigned int seed = 87578954;
И еще одно, чтобы растянуть время до повтора значений на подольше и делаешь с ним шляпу какую-нибудь, чтобы оно отличалось от папки:
unsigned int old_seed = (seed>>4) * (seed>>11);
( >> и << побитовый сдвиг, загугли если что)
Творишь с seed всякие непотребства:
seed = (seed*seed)%123456;
(% - остаток от деления)
В принципе в seed уже что-то вроде рандома валяется, можешь забирать от него остаток для личных целей, повторяя предыдущую операцию перед каждым вызовом.
И добавляешь условие (тоже со всякой фигней):
if (seed<1000) { seed = (old_seed*old_seed)>>4 + seed*old_seed + old_seed<<8; old_seed = (old_seed* old_seed) % 592394; }
Никакой криптостойкости, но и никакого гемора со сложными алгоритмами + достаточно долгий проход до повторения серии.
Похожие вопросы
- псевдослучайная последовательность
- Генератор Случайных Чисел
- Как написать программу, которая будет представлять вещественное число в памяти компьютера
- помогите решить задачи на паскале 1Во входном файле дана последовательность чисел. Требуется найти второе по величине чи
- При делении отрицательного числа выводит не правильный ответ (assembler). Если беру числа 127 13 10, пишет переполнение
- помогите решить задачу Во входном файле дана последовательность чисел , число (количество чисел в после
- Организовать кнопку прервать в Delphi
- аскаль. Написать программу которая переводит число из одной системы счисления в другую
- Организовать ввод одномерного массива
- Нужно организовать связанный список на с++.