1. Случайные числа
1. Случайные числа
Генерация случайного числа
Можно сделать из этого настоящую головоломку: написать программу, выполнение которой на компьютере дает число, случайным образом расположенное в данном интервале, например, между 0 и 1. Но это невозможно.
Некоторые языки содержат функцию, значение которой есть непредсказуемое число в данном интервале. Если ваш компьютер использует LSE, достаточно набрать на клавиатуре
? ALE(0)
чтобы получить в ответ непредсказуемое число между 0 и 1, которое может рассматриваться как полученное случайным образом.
На языке Бейсик команда RND(0) дает тот же эффект при условии, что предварительно выполнена инструкция RANDOM. Но Бейсик — это скорее общее имя для целого класса языков, чем обозначение совершенно определенного стандартизованного языка, не меняющегося от одной машины к другой. Так что сверьтесь с описанием к вашему компьютеру…
Если используемый вами язык допускает описанные выше или аналогичные возможности, то получить случайное число в интервале (0, 1) — это никакая не головоломка, это тривиально.
Но если в языке такой возможности нет,; то это больше чем головоломка, это невозможно. Предположим, что мы сделали программу, производящую такое число. Эта программа не может иметь исходных данных, иначе это не она вытаскивает, случайное число, а именно вы при введении данных… Если же у нее нет данных, то она действует, исходя из констант. Но тогда нет переменных элементов, и последовательные запуски программы дают совпадающие результаты. Как же вы получите с помощью такой программы случайное число?[2]
Поэтому если ваш компьютер не допускает функции, дающей стохастическое число, я вижу только одно решение[3]: введите сами случайное число в ваш компьютер. Как это сделать? Вот предложение. Вы берете колоду из 52 карт, перетасовываете. Затем вы делите колоду на верхнюю и нижнюю части и берете из нижней части три верхние карты. Небольшая и очень простая программа читает три целых числа x, y, z. В качестве значений этих целых чисел вы задаете численные значения трех выбранных карт, считая туза за 1, валета — за 11, даму — за 12, короля — за 13. Компьютер вычисляет значение
(((x ? 1)/13 + у ? 1)/13 + z ? 1)/13.
Например, если вы достанете, как только что случилось со мной, семерку бубен, десятку червей и еще шестерку бубен, то
x =7 y= 10 z = 6
и компьютер получит 0.440601.
Эго значение не является воистину непредсказуемым. Как только вы достанете карты, вы уже сможете понять порядок величины результата. С другой стороны, таким способом вы не сможете получить более 13? = 2197 различных чисел. Но этого на самом деле достаточно для приложений, которые мы рассматриваем в этой книге. А если вы и в самом деле хотите получить что-либо непредсказуемое, прочтите следующий раздел.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Глава 19 Случайные числа
Глава 19 Случайные числа Слово случайный имеет разный смысл для разных программистов в различное время. Для большинства приложений оказываются достаточно эффективными псевдослучайные числа, предусмотренные библиотекой С. Благодаря тому, что псевдослучайные числа
1. Числа
1. Числа А сейчас, когда вы всё установили, давайте напишем программу! Откройте ваш любимый текстовый редактор и наберите на клавиатуре следующее:puts 1+2Сохраните вашу программу (да, это программа!) под именем calc.rb (.rb – это то, что мы обычно пишем в конце имени программы,
5.11. Комплексные числа
5.11. Комплексные числа Стандартная библиотека complex предназначена для работы с комплексными числами в Ruby. Большая ее часть не требует пояснений.Для создания комплексного числа применяется следующая несколько необычная нотация:z = Complex(3,5) # 3+5iНеобычно в ней то, что имя метода
Глава 3 Числа
Глава 3 Числа 3.0. Введение Даже если вы не занимаетесь написанием научных или инженерных приложений, вам все равно придется работать с числами. Эта глава содержит решения проблем, часто возникающих при работе с числовыми типами С++.Некоторые из рецептов содержат методики
1. Случайные числа
1. Случайные числа Генерация случайного числа Можно сделать из этого настоящую головоломку: написать программу, выполнение которой на компьютере дает число, случайным образом расположенное в данном интервале, например, между 0 и 1. Но это невозможно.Некоторые языки
Простые числа
Простые числа ??** Головоломка 16. Чемпион головоломок.На мой взгляд, наиболее замечательная арифметическая головоломка, над которой мне пришлось особенно долго работать и которая дала мне возможность получить некоторые удовлетворительные результаты, — это, конечно,
1. Случайные числа
1. Случайные числа Упражнение 2.Нужно изучить поведение дробной части (x + a)8, когда x меняется от 0 до 1. Нарисуйте, хотя бы приближенно, кривую, представляющую эту функцию. Рассмотрите интервал на оси x, в котором значение функции меняется от некоторого целого числа до
1. Случайные числа
1. Случайные числа Головоломка 1.Первая стратегия. Нужно сравнить u2i и ui. Они равны, если 2i = i + kp для целого k, следовательно, если i делится на p. Кроме того, i должно превосходить r. Следовательно, нужно искать наименьшее кратное p, большее или равное r.Положим vi = u2i. Тогдаvi+1 = u2i+2 =
Двоичные числа
Двоичные числа В основе способа, который мы обычно используем для записи чисел, лежит число 10. Может быть, вы когда-то слышали, что число 3652 имеет 3 в позиции тысяч, 6 в позиции сотен, 5 в позиции десятков и 2 в позиции единиц. Поэтому мы можем представить число 3652 в виде3 ? 1000 + 6 ?
ТЕХНОЛОГИИ: Случайные связи
ТЕХНОЛОГИИ: Случайные связи Автор: Павел ПротасовСто тридцать лет назад, 10 марта 1876 года, преподаватель школы для глухих Александр Грэхем Белл изобрел телефон. Это случилось во время поиска способа передачи нескольких телеграфных сообщений по одному проводу [Ближайший
У11.1 Комплексные числа
У11.1 Комплексные числа Напишите спецификацию АТД для класса COMPLEX, описывающую понятие комплексных чисел с арифметическими операциями. Исходите из точной