Дмитрий Елисеев - Рассказы о математике с примерами на языках Python и C
- Название:Рассказы о математике с примерами на языках Python и C
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Дмитрий Елисеев - Рассказы о математике с примерами на языках Python и C краткое содержание
Книга распространяется бесплатно, скачать оригинал в PDF можно на странице
.
Рассказы о математике с примерами на языках Python и C - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Нужная нам вероятность обратного события равна обратной величине:

Вывести все значения несложно с помощью программы на Python:
import math
def C(n):
return 1000 – 1000 * math.factorial(365) / (math.factorial(365 – n) * 365**n)
for n in range(3, 50):
print("{} - {}%").format(n, 0.1 * C(n))
365! это очень большое число, поэтому здесь использованы целочисленные вычисления языка Python, уже затем значение было переведено в проценты.
В результате получаем следующую таблицу:
3 | 0.0082 | 4 | 0.0163 | 5 | 0.0271 |
6 | 0.0404 | 7 | 0.0562 | 8 | 0.0743 |
9 | 0.0946 | 10 | 0.1169 | 11 | 0.1411 |
12 | 0.1670 | 13 | 0.1944 | 14 | 0.2231 |
15 | 0.2529 | 16 | 0.2836 | 17 | 0.3150 |
18 | 0.3469 | 19 | 0.3791 | 20 | 0.4114 |
21 | 0.4436 | 22 | 0.4756 | 23 | 0.5072 |
24 | 0.5383 | 25 | 0.5686 | 26 | 0.5982 |
27 | 0.6268 | 28 | 0.6544 | 29 | 0.6809 |
30 | 0.7063 | 31 | 0.7304 | 32 | 0.7533 |
33 | 0.7749 | 34 | 0.7953 | 35 | 0.8143 |
36 | 0.8321 | 37 | 0.8487 | 38 | 0.8640 |
39 | 0.8782 | 40 | 0.8912 | 41 | 0.9031 |
42 | 0.9140 | 43 | 0.9239 | 44 | 0.9328 |
45 | 0.9409 | 46 | 0.9482 | 47 | 0.9547 |
48 | 0.9605 | 49 | 0.9657 | 50 | 0.9703 |
Как видно из таблицы, уже при количестве сотрудников 50 человек, хотя бы 1 день рождения почти гарантированно совпадет (вероятность 97%), а для 24 человек получаем вероятность равную 0.538, т. е. более 50%.
13. Поверхность Луны
Посмотрим на фотографию поверхности Луны. Эта фотография была сделана в телескоп с балкона:

Что мы видим? Очевидно, лунную поверхность, покрытую кратерами, оставшимися от предыдущих столкновений метеоритов с Луной.
Казалось бы, причем здесь математика? При том, что столкновение с метеоритом — случайное событие, его частота подчиняется теории вероятности. На Луне нет атмосферы, нет эрозии и ветра, поэтому лунная поверхность — идеальная «книга», в которой записаны события последних десятков тысяч лет. Изучая поверхность Луны, можно подсчитать какого размера объекты падали на ее поверхность.
Исследование поверхности Луны камерами высокого разрешения ведется и сейчас. Было подсчитано, что за последние 7 лет на Луне образовались не менее 220 новых кратеров. Это важно еще и потому, что данные подсчеты помогут оценить опасность для Земли.
Есть ли кратеры на Земле? Разумеется есть. Данная фотография сделана вовсе не на Луне или на Марсе, а в США:

Так называемый Аризонский кратер возник около 50 тыс. лет назад после падения метеорита диаметром 50 метром и весом 300 тысяч тонн. Диаметр кратера составляет более километра. В Сибири находится кратер Попигай размером 100 км, он был открыт в 1946 году.
Разумеется, такие большие кратеры довольно-таки редки. Последнее же падение крупного метеорита было по историческим меркам весьма недавно, всего лишь около 100 лет назад. В 1908 г. в тунгусской тайге упал метеорит, мощность взрыва оценивалась от 10 до 50 мегатонн. По отзывам, взрывная волна обогнула земной шар, а световые явления в атмосфере были столь сильны, что в Лондоне ночью можно было читать газету. Лишь по случайности падение метеорита пришлось на малонаселенные районы Сибири — если бы удар был чуть раньше или позже, такой мощности хватило бы, чтобы полностью уничтожить город размером с Санкт-Петербург. Совсем же недавно, в 2013 году, метеорит размером около 20 метров разрушился в атмосфере, а его многочисленные обломки упали в районе Челябинска. Пострадало примерно 1500 человек, в основном от выбитых ударной волной стекол. По оценкам NASA суммарная мощность составила до 400 килотонн.
Увы, то, что для определенного района Земли может быть катастрофой, для космоса совершенно заурядный момент. Это лишь вопрос времени, достаточно посмотреть на поверхность Луны. По одной из гипотез, 66 миллионов лет назад наша планета столкнулась с большим астероидом, в результате чего было уничтожено 75% видов живых существ, в том числе и динозавры. Поэтому задача наблюдения и прогнозирования астероидной опасности должна быть в обязательном списке дел для человечества, если мы не хотим повторить их судьбу.
14. Так ли случайны случайные числа?
В каждом языке программирования существует функция генерации случайных чисел. Они используются в различных областях, от игр до криптографии или генерации паролей.
На языке Python вывести случайное число можно так:
import random
print(random.randint(0, 9))
Но как это работает? Задача вывода действительно случайного числа далеко не так проста как кажется. Чтобы вывести что-то на компьютере, это что-то надо сначала запрограммировать. Но очевидно, что задать формулой случайный, хаотический процесс, невозможно — по определению формула и хаос противоречат друг другу. Именно поэтому числа на самом деле являются псевдослучайными — они лишь похожи на случайные, а в реальности являются результатом вполне конкретного алгоритма.
Одним из наиболее популярных и простых алгоритмов, является линейный конгруэнтный метод (linear congruential generator). Его формула проста:

Рассмотрим пример реализации на языке Python:
x = 123456789
m = 2**31 - 1
for p in range(10):
x = (1103515245 * x + 12345) % m
print(x)
Программа действительно выводит числа, которые вполне похожи на случайные: 295234770, 465300796, 1475666158, 588454008, 929838277, 50298429, 1089988954, 698778454, 2010473888, 36125306. Как нетрудно догадаться, при повторном запуске программы числа будут одни и те же. Чтобы числа не повторялись, такой генератор обычно инициализируют значением текущего системного времени.
Увы, такой генератор имеет определенные недостатки: во-первых, его последовательность рано или поздно начинает повторяться, во-вторых, он не является криптостойким — зная текущее значение, можно вычислить следующее, что к примеру, может позволить злоумышленнику узнать «случайно» сгенерированный пароль по его первым буквам.
Существуют другие алгоритмы генерации псевдослучайных чисел, например на основе простых чисел Мерсенна (Mersenne Twister generator). Существуют также аппаратные генераторы случайных чисел, например такая функция присутствует в процессорах Intel. Есть даже сайт https://www .random.org, с помощью которого можно сгенерировать случайную последовательность чисел. По заверениям авторов, они используют 3 радиоприемника, настроенных на частоту шума атмосферных помех.
Читать дальшеИнтервал:
Закладка: