Forum Webscript.Ru
Программирование => Теория, алгоритмы и стандарты => Тема начата: scientist от 27 Января 2004, 22:18:28
-
Каким алгоритмом можно реализовать на языке С выбор случайного числа? Возможно ли сгенерировать идеальный алгоритм, который бы выдавал идеально-случайные последовательности чисел?
-
нельзя.
-
Почему?
-
языки программирования используют генератор псевдо-случаных последовательностей.
Для реализации действительно случайной последовательности используются специальные микросхемы.
PS
(AFAIK)
-
А по какому принципу работают специальные микросхемы. Какой алгоритм отбора случайного числа?
-
судя по тем источникам, которые я когда-то читал, там используются случайные физически процессы (например белый шум).
Такие микросхемы используются в крупных криптографических системах (например у военных). Так что алгоритмы простым смертным недоступны :)
-
а вообще пользуйся яндексом и гуглом.
Поиск по словам:
- генератор случайной последовательности
- генератор псевдослучайной последовательности
-
Макс:
случайные физически процессы (например белый шум).
Скорее розовый
Белый шум можно упорядочить с точки зрения формальной логики
правда розовый реализовать сложнее
-
Хорошо, идеальный процесс нам неудасться сымитировать здесь программно, тогда остается процесс генерации псевдо-случайных чисел. Какой алгоритм позволяет добиться наиболее сложного(если хотите - завуалированного) процесса отбора случайного числа посредством банальных операторов логики, таких как OR, XOR, AND (Аналоги на С: ||, !=, <=, ==, >=, && и другие)?
-
scientist
а не проще использовать возможности, которые предоставляет язык ? В с++ по любому есть (хотя я его не знаю) функция, возвращающая случайное число из заданного диапазона.
-
ИМХО, максимализм... из разряда: я где-то читал, что средствами языка получается псевдослучайная последовательность, меня не устраивает псевдо... мне надо
добиться наиболее сложного
, а надо сначала задаться вопросом зачем.
-
Затем, чтобы сгенерировать псевдо-случайное число, которое будет уникальным с точки зрения наблюдающих. Например, игровой автомат.
Макс
Вот хорошая информация (http://algolist.manual.ru/maths/generator/index.php) по генераторам случайных чисел. Как правило, зарезервированных функций в языке недостаточно, т.к. такие генераторы принято считать "грязными". Наиболее чистые и равномерные последовательности случайных чисел получаются в результате сложных алгоритмов, требующих значительных вычислительных мощностей.
-
scientist:
Затем, чтобы сгенерировать псевдо-случайное число, которое будет уникальным
именно уникальное или все же случайное ?
-
Макс, ты прав, идеальных чисел нет в генераторах.
А вот условие равнозначности "уникального" и "случайного" не выполняется, т.к. эти два понятия из разных категорий, следовательно мы не можем сопоставлять их как результат дилеммы.
-
scientist
Наиболее чистые и равномерные последовательности случайных чисел
Мы вообще о чём говорим? Что значит ЧИСТЫЕ (!) и РАВНОМЕРНЫЕ (!) СЛУЧАЙНЫЕ (!!!) последовательности? Это что-то типа горько-солёная клубника... имхо
-
scientist имел в виду дисперсию или среднеквадратическое отклонение, которое в идеале равно, если не ошибаюсь, единице.
[off]Математики, поправьте.[/off]
Это значит, что вероятность появление определенного числа из диапазона возможных значений одинакова для всего этого диапазона.
-
Понял, тады извиняюсь за невежество :rolleyes: