Почему это трудно, чтобы программа генерировала случайные числа?

См. Brent Yorgey's Typeclassopedia :

. В отличие от некоторых других типов классов, с которыми мы сталкиваемся, данный тип имеет не более одного действительного экземпляра Functor. Этот можно доказать через свободную теорему для типа fmap. Фактически, GGC может автоматически выводить экземпляры Functor для многих типов данных.

blockquote>

21
задан nzpcmad 11 March 2009 в 00:36
поделиться

26 ответов

Как насчет, "Поскольку компьютеры просто следуют инструкциям и случайным числам, противоположность следования инструкциям. Если Вы делаете случайное число путем следования инструкциям, то это не очень случайно! Предположите пытаться дать кому-то инструкции относительно того, как выбрать случайное число".

67
ответ дан Jesse Rusak 29 November 2019 в 06:07
поделиться

Компьютеры просто не имеют подходящих аппаратных средств. Аппаратные средства обычного компьютера предназначены, чтобы быть детерминированными. С подходящими аппаратными средствами как упомянутый здесь случайные числа не являются проблемой вообще.

0
ответ дан sharptooth 29 November 2019 в 06:07
поделиться

Чтобы заставить компьютер генерировать случайное число, компьютер должен иметь источник случайности для запуска с.

Это должен быть feeded семя, которое не может ожидаться или вычисляться, просто смотря на семя, если семя прибудет из часов тогда, это может быть предсказано или вычислено путем знания времени, если семя прибывает из подобной съемки lavalamp, и получите числа от потока изображения тогда, более трудно просто посмотреть на семя для знания, каково следующее число будет.

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

0
ответ дан Stefan 29 November 2019 в 06:07
поделиться

Необходимо отметить, что люди выполняют очень плохо при генерации случайных чисел . Компьютеры хуже, потому что они просто следуют за строгим набором команды. Люди могут только генерировать хорошие (псевдо) случайные числа при следовании алгоритму, ряд команд. Компьютеры являются тем же.

, Хотя нужно отметить, что компьютеры могут собрать энтропию от "среды", подключенной к нему, как клавиатура и действия мыши, что средства в генерации случайных чисел (или непосредственно или отбором PRNG).

0
ответ дан Juliano 29 November 2019 в 06:07
поделиться

Его, вероятно, полезный для различения число, которое трудно предсказать (который может создать компьютер) от чего-то, что не детерминировано (который немного более жесток для компьютеров, и теоретически, при этом любой медосмотр).

0
ответ дан Frank Schwieterman 29 November 2019 в 06:07
поделиться

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

Когда-то много компьютеров не имели никакого способа достигнуть эти данные и могли только предложить псевдослучайность, то есть, случайное, но повторяемое распределение чисел на основе конкретного семени. Во многих целях это достаточно - выбор другого семени каждый раз результаты в достаточно хорошей случайности. В других целях, таких как шифрование, это не достаточно сильно, и Вам нужна некоторая случайность для запуска с этого, не повторяемо или предсказуем. Сегодня, большинство компьютеров (за исключением встроенных устройств, возможно) достаточно сложно, чтобы иметь источник случайности, которая может генерировать случайные числа силы шифрования. Например, Linux имеет /dev/random и поддержка платформы.NET криптографически сильный класс RandomNumberGenerator , который имеет много реализаций.

0
ответ дан tvanfosson 29 November 2019 в 06:07
поделиться

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

Предполагают разрабатывать алгоритм для моделирования броска костей. Можно легко сформулировать некоторую процедуру для генерации различных чисел на каждом повторении. Но можете Вы гарантия , что, в конечном счете (я имею в виду до бесконечности), сумма времен, которые 6 вышли, совпадет с каким-либо другим числом? При разработке хорошего генератора случайных чисел это - вид обязательства, которое необходимо принять. Необходимо обеспечить сильные гарантии (т.е. математические доказательства) о случайности, если приложение (например, лотерея) требует его.

0
ответ дан seuvitor 29 November 2019 в 06:07
поделиться

Столь удивительный, как это может казаться, трудно заставить компьютер делать что-то случайно. Компьютер следует своим инструкциям вслепую и поэтому абсолютно предсказуем. (Повреждается компьютер, который не следует его инструкциям этим способом.) Существует два основных подхода к генерации случайных чисел с помощью компьютера: Генераторы псевдослучайного числа (PRNGs) и Истинные Генераторы случайных чисел (TRNGs).

0
ответ дан Ash 29 November 2019 в 06:07
поделиться

Прежде всего, потому что компьютеры не имеют никаких функций, которые ведут себя дискретными, неслучайными способами. Компьютер предсказуем, который позволяет нам программировать надежное программное обеспечение. Если бы это не было предсказуемо, то было бы легче генерировать случайное число (так как наше программное обеспечение могло полагаться на этот непредсказуемый метод).

, В то время как возможно генерировать псевдослучайные числа и числа, которые распределяются случайным образом, Вы не можете генерировать действительно случайные числа без отдельного оборудования. Существуют аппаратные средства, которые генерируют действительно случайные числа на основе "квантовых" взаимодействий (по крайней мере, по данным производителей). Покер-сайты онлайн иногда используют эти адаптеры для своих генераторов.

, По-видимому, существуют даже онлайн-сервисы для обеспечения случайных чисел - random.org , например.

0
ответ дан Beep beep 29 November 2019 в 06:07
поделиться

Компьютеры могут только выполнить алгоритмические вычисления, и действительно случайное число не является алгоритмической вещью. Можно получить алгоритмы, которые производят числа, которые ведут себя как случайные числа; такие алгоритмы называют 'Генераторами Псевдослучайного числа.

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

0
ответ дан ConcernedOfTunbridgeWells 29 November 2019 в 06:07
поделиться

Алгоритмы для генерации случайных чисел неизбежно детерминированы. Они берут маленькое случайное семя и используют его для получения длинной строки псевдослучайных цифр.

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

0
ответ дан Rob Lachlan 29 November 2019 в 06:07
поделиться

Это твердо, потому что, учитывая те же наборы исходных данных и условий, программа приведет к тому же результату каждый раз. Это по определению не случайно.

0
ответ дан Alan 29 November 2019 в 06:07
поделиться

Не твердый, вот пара бесплатно: 12, 1400, 397.6

-1
ответ дан Frank Schwieterman 29 November 2019 в 06:07
поделиться

Поскольку нет такой вещи как случайное число.

Случайный человеческое понятие, которое мы используем, когда мы не можем постигать данные и не понимаем это. Если мы должны полагать, что наука в конечном счете приведет к пониманию того, как все работает тогда, конечно, все детерминировано.

Устраняют человека, и там не случайно существует только "это". Это происходит, потому что это происходит, не потому что это случайно.

2
ответ дан Alexej Magura 29 November 2019 в 06:07
поделиться

Поскольку единственный истинный источник случайности существует на квантовом уровне. С подходящими аппаратными средствами помогает, компьютеры могут получить доступ к этому уровню. например, они могут выбрать затухание radioactve изотопа или шума от термоэлектронного клапана. Но Ваш основной ПК не идет с этим интересным материалом.

2
ответ дан 29 November 2019 в 06:07
поделиться

Простое объяснение детей:

определением случайности является философский и математический вопрос вне объема этого ответа, но по определению нет такой вещи как "случайное" число. В метафизическом смысле число только случайно в последовательной форме; однако, существует вероятность, что последовательность следует за определенными статистическими дистрибутивами в зависимости от объема выборки. Генератор случайных чисел (в нашем случае генератор псевдослучайного числа, или PRNG) является просто устройством для создания квазислучайной последовательности чисел, которую мы можем только оценить (на основе данной вероятности, свойственной в последовательности), чтобы быть случайными.

необходимо объяснить детям, что программы могут только подражать этим устройствам с помощью сложных математических формул (которые гарантируют отсутствие "случайности" по определению, потому что они - результат некоторой функции или процедурный алгоритм). Как правило, строгий статистический анализ необходим для дифференциации, использование квантовых аппаратных средств PRNG (используйте это в качестве возможности объяснить детям Heisenberg Принцип!) и то из сильного программного обеспечения PRNG.

2
ответ дан John Rasch 29 November 2019 в 06:07
поделиться

"Дети, если они не повреждаются, компьютеры, никогда не лежат, и они всегда делают то, что Вы говорите им делать. Даже когда мы разочарованы результатами, всегда оказывается, что они делали то, что им сказали сделать с полной точностью. Они могут только сделать две вещи: добавьте один и один и переместите число от одного места до другого. Если Вы хотите, чтобы они произвели случайные числа, необходимо объяснить им, как сделать это с точки зрения добавления того и один и перемещение. Как только Вы объяснили, что, результаты не будут случайны".

3
ответ дан Thomas L Holaday 29 November 2019 в 06:07
поделиться

Поскольку, учитывая любой вход, алгоритм производит тот же самый вывод каждый раз. И Вы не можете только обеспечить "случайный" вход, потому что Вы пытаетесь генерировать случайное число во-первых.

3
ответ дан Nikhil Chelliah 29 November 2019 в 06:07
поделиться

Генерация случайных чисел на компьютере похожа на игру "Eenie жадина miney moe" при выборе, кто Это сначала в игре тега. На поверхности это действительно выглядит случайным, но когда Вы входите в детали, это абсолютно детерминировано. Трудно сделать eenie жадину miney moe в схему, из которой человек действительно не может предсказать результат.

Также существуют некоторые трудности с получением распределения, хорошего и ровного.

4
ответ дан Kevin Conner 29 November 2019 в 06:07
поделиться

Поскольку компьютеры являются детерминированными машинами.

5
ответ дан eduffy 29 November 2019 в 06:07
поделиться

Вот моя попытка объяснения случайности на приблизительно уровне восьмого класса. Надеюсь, что Ваши дети находят это полезным!

Удивление, поскольку это может казаться, компьютер, не очень умно. Компьютеры должны следовать своим инструкциям вслепую и поэтому абсолютно предсказуемы. Компьютер, который не следует его инструкциям этим способом, на самом деле, повреждается! Мы хотим, чтобы компьютеры сделали точно, что мы говорим им.

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

9
ответ дан John Feminella 29 November 2019 в 06:07
поделиться

Попросите, чтобы они разработали пошаговый метод для генерации случайного числа.

И не принимают, "выбирают число от 1 до 10" как ответ;)

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

10
ответ дан coobird 29 November 2019 в 06:07
поделиться

Вот является ребенок дружественным объяснением:

  1. Получают Игру в кости (количество сторон не имеет значения)

  2. , Записывают их на листке бумаги:

    • право Перемещения
    • Перемещается вверх
    • , Перемещаются вверх
    • Поворот игра в кости более чем [1 139]
    • Движение вниз
    • , право Перемещения
  3. Показывает им игру в кости и бумагу. Объясните, что игра в кости представляет компьютер, и бумага представляют математику или алгоритм, который говорит компьютер, какое число это возвратит.

  4. Теперь, кидать кости. Скажите им, что Вы - "отбор" или просьба, чтобы компьютер запустился в случайном положении игры в кости.

  5. Выполняют каждый шаг в газете (переместите право) путем перемещения игры в кости.

    • Скажем, что Вы бросили примкнувшие 6, умирают, и это было отобрано в 5. Движущимся правом Вы получаете 4.
  6. Объясняют, что компьютер должен запуститься с начального значения. Это могло быть дано любым количеством источников, таких как дата или движение мыши. Покажите им, который, как они бросают игру в кости, определяет начальное значение.

  7. Объясняют, что листок бумаги - то, как компьютер получает следующее число. Скажите им, что инструкции относительно бумаги могут быть изменены так же легко, как алгоритм для случайного генератора может быть изменен программистом.

  8. Весело проводят время, показывая им различные возможности, который только ограничен их воображением.

Теперь для ответа на Ваш вопрос:

Говорят им, что, когда хороший математик знает начальное значение и что ступает, компьютер в настоящее время в, математик может сказать то, что является следующим значением случайного числа.

  1. Просят, чтобы ребенок должен был скрыть бумагу и бросить игру в кости.
  2. Тогда просят, чтобы ребенок выполнил шаги на бумаге, Вы тогда записываете, как он получает следующее случайное число.
  3. Впоследствии, покажите им свою статью. Теперь, когда у Вас есть копия их генератора случайных чисел, его легкого для кого-либо еще для "предположения" следующего случайного для выхода.

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

... как побочный эффект, если ребенок смог придумать хороший алгоритм, который смутил Вас, в которых Вы не можете вывести следующую последовательность, тогда у Вас есть яркий ребенок.: D

13
ответ дан MrValdez 29 November 2019 в 06:07
поделиться

Поскольку программа является системой, и все в системе сделано работать с непротиворечивостью и регулярностью. Случайность не имеет никакого места в системе.

0
ответ дан JimDaniel 29 November 2019 в 06:07
поделиться

Некоторое время назад я наткнулся на "Dice-O-Matic"

http://GamesByEmail.com/News/DiceOMatic

Вроде интересного реального применения проблема.

0
ответ дан 29 November 2019 в 06:07
поделиться

Действительно нужно было сделать

RFC 1149.5 specifies 4 as the standard IEEE-vetted random number.

Источник: http://xkcd.com/221/

3
ответ дан 29 November 2019 в 06:07
поделиться
Другие вопросы по тегам:

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