@Tonako

Почему нельзя генерировать на компьютере случайные числа?

Я имею ввиду качественный rand.
Задача ведь совсем простая, неужели нет решения? Что такие сложности вызывает?
Нужно решение без использования сторонних железок и подключений.
  • Вопрос задан
  • 2048 просмотров
Пригласить эксперта
Ответы на вопрос 2
saboteur_kiev
@saboteur_kiev
software engineer
Задача совершенно сложная, поскольку компьютер - вещь совершенно не случайная. Компьютер - он конкретный, и не способен создать случайность, только выполнить конкретные команды.

Большинство генераторов случайных чисел пытаются взять различные величины - например текущее время из таймера, различные данные из разных устройств, произвести над этим математические операции, и получить псевдослучайное число.
Но при большом усердии, такое число можно повторить, зная изначальные условия, поэтому это называется псевдослучайностью.

Вторая проблема - взять эти разные величины - это нужно обратиться к таймеру, обратиться к устройствам, выполнять эти математические операции, то есть это не быстро.

Без сторонних железок, можете пробовать сами..
Какой-нить бред, вроде текущее время * температуру проца, взять первые 1024 от этого и прочитать указанный сектор на первом разделе устройства, провернуть через md5, опять прибавить новое текущее время.
Если вам быстродействие устроит - то вот пример более-менее рандомного числа, которое в разное время на разных машинах будет генерить разные цифры. Но вот проблема в том, что если вы будете несколько недель генерить этим методом рандомные цифры от 0 до 100, то через несколько недель, статистика вам покажет, что некоторые числа будут встречаться гораздо чаще, чем другие.

Хороший алгоритм, который на млн запросов выдаст примерно ровное выпадание чисел по ВСЕМУ диапазону - задача крайне сложная.
Ответ написан
opium
@opium
Просто люблю качественно работать
если просто нормальное распределение то довольно хорошо генерит ранд с привязкой от времени , понятно что алгортим предсказуемый , но тут либо шашечки либо ехать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы