Football Accumulator Tips

Translations

Install APC for PHP on Linux

Инсталирайте APC за PHP на Linux

 

Публикувано в PHP – Последна актуализация на 05 ноември, 2008

APC е алтернативната PHP кеш, която е безплатна, отворена и здрава рамка за кеширане и оптимизиране на PHP междинен код. Това означава, че APC чете вашите PHP файлове, ги анализира в по-ефективен двоичен формат и след това ги съхранява в паметта, така че всяка заявка за вашите PHP файлове и PHP библиотечни файлове може да бъде подадена от анализирания кеш. Това обикновено води до увеличаване на скоростта при показване на сайт в PHP, особено в много файлове с библиотеки. Тази публикация разглежда как да инсталирате APC за PHP на Linux. Линукс дистрибуцията, която използвах, беше CentOS 5, но би трябвало да е сравнително подобна за повечето дистрибуции.

 

Изтегляне на APC от PHP PECL

На първо място трябва да изтеглите APC кода от PHP PECL библиотеката. Така че променете директорията някъде като / tmp и след това да получите най-новата версия като така:

 

$ wget http://pecl.php.net/get/APC

 

Това винаги ще получи най-новата версия, а в моя случай, когато инсталирах току-що изтегления APC-3.0.16.tgz харесвам така:

 

–22:58:41–  http://pecl.php.net/get/APC
Resolving pecl.php.net… 216.92.131.66
Connecting to pecl.php.net|216.92.131.66|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 114298 (112K) [application/octet-stream]
Saving to: `APC-3.0.16.tgz’

100%[=====================>] 114,298 97.1K/s   in 1.1s

22:58:43 (97.1 KB/s) – `APC-3.0.16.tgz’ saved [114298/114298]

 

Така че тогава трябва да извлечете файловете:

 

$ tar -zxf APC-3.0.16.tgz

 

и променете в директорията APC:

 

$ cd APC-3.0.16

 

Инсталирайте APC

 

Следващата стъпка е да изпълните командата “phpize”. Това изисква да имате инсталиран PHP пакет за разработка. На CentOS това е php-devel (инсталирано чрез стартиране на “yum install php-devel”) и трябва да има подобно име на други дистрибуции на Linux.

 

$ phpize
Configuring for:
PHP Api Version:      20041225
Zend Module Api No:   20050922
Zend Extension Api No:   220051025

 

След това конфигурирате APC, като го казвате къде е изпълним файл php-config. Ако не знаете къде е това, направете следното:

 

$ whereis php-config

 

който ще върне нещо като:

 

php-config: /usr/bin/php-config /usr/share/man/man1/php-config.1.gz

 

и след това изпълнете командата configure като:

 

./configure –enable-apc –enable-apc-mmap –with-apxs –with-php-config=/usr/bin/php-config

 

Това ще продължи и ще направим някои конфигуриращи неща, които ще изглеждат така:

 

checking for egrep… grep -E
checking for a sed that does not truncate output… /bin/sed

checking dynamic linker characteristics… GNU/Linux ld.so
checking how to hardcode library paths into programs… immediate
configure: creating ./config.status
config.status: creating config.h

 

 

Сега, когато се извърши конфигурирането, това е просто въпрос на текуща марка:

 

$ make

Libraries have been installed in:
  /tmp/APC-3.0.16/modules


If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR’
flag during linking and do at least one of the following:
  – add LIBDIR to the `LD_LIBRARY_PATH’ environment variable
during execution
  – add LIBDIR to the `LD_RUN_PATH’ environment variable
during linking
  – use the `-Wl,–rpath -Wl,LIBDIR’ linker flag
  – have your system administrator add LIBDIR to `/etc/ld.so.conf’

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
———————————————————————-

Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).

 

и след това направете инсталиране:

 

$ make install
Installing shared extensions: /usr/lib64/php/modules/

 

и рестартиране на уеб сървъра на Apache:

 

/etc/init.d/httpd restart

 

Сега кеша APC ще бъде активиран. Можете да потвърдите това, като създадете скрипт, който извиква командата phpinfo () и търсите раздела APC. Той щеше да е включен по подразбиране, като добави ред “extension = apc.so” към файла /etc/php.ini, но може да искате да добавите още настройки, за да го конфигурирате повече. Файлът INSTALL предлага това (настроих стойностите по подразбиране в края на всеки ред, ако не зададете нищо във файла php.ini):

 

apc.enabled=1                   # default = 1
apc.shm_segments=1                  # default = 1
apc.shm_size=128                # default = 30
apc.ttl=7200                    # default = 0
apc.user_ttl=7200                   # default = 0
apc.num_files_hint=1024             # default = 1000
apc.mmap_file_mask=/tmp/apc.XXXXXX  # default = no value
apc.enable_cli=1                # default = 0

 

това е всичко за него. Има и скрипт за наблюдение, за да можете да видите какво се кешира и колко памет се използва и др. Можете да прочетете за това в моята “Показване на PHP APC Cache Information” пост.

Актуализиране на 5 ноември 2008 г.: Току-що инсталирах това на друг сървър и нямах проблеми при инсталирането му, но той не добави автоматично разширението = apc.so към файла /etc/php.ini. Така че, ако не изглежда да работи, проверете php.ini, за да сте сигурни, че линията е там и го добавете, ако не.

 

Coding of Computer Methods for Mathematical Computation

Коментари за кодиране

Оригиналният първичен код за книгата Компютърни Методи за Математически Изчисленияот Forsythe, Malcolm и Moler е разработен преди пускането на стандарта Fortran 77. Следните бележки обобщават промените, направени в оригиналната библиотека преди Фортран 77, които го превръщат в съвремения Fortran.

 

  • Всички рутинни процедури се състоят от Essential Lahey Fortran (ELF). Това изисква да няма имплицитно типизиране, да се декларира намерението на всички процедурни аргументи, да не се използват остарели контролни изрази, да не се използват изявления COMMON или EQUIVALENCE и да се зачитат многобройни изисквания на ELF за синтаксиса. Те също така съставят без предупреждения със строг флаг Фортран-95 с gfortran и g95.
  • Като аргументи не се приемат никакви измерения. Вътрешната функция SIZE се използва от всички процедури за определяне на размера на векторите и матриците.
  • Всички DO-цикли се преобразуват в DO-END DO без номера на изявленията. CYCLE и EXIT се използват за навигация с цикли. Веригите, които броят сега, използват третия аргумент от -1 за понижаване.
  • В библиотеката няма извлечения за вход или изход. Всички процедури, при които има предупредителни съобщения, сега имат променливи на кода на грешката, които сигнализират за грешни условия
  • Има единични и двойни версии на всички процедури. Има изрази на MODULE INTERFACE, които позволяват да се използва същото име на подпрограмата, независимо от избраната точност.
  • Не съм извършил това, което може да се нарече “агресивно” прекодиране на по-стария Фортран код. По-конкретно, все още съществуват изявления за GO TO и редица цикли могат все още да бъдат преобразувани в масивни нотации или вътрешни продуктови конструкции.
  • Ако сте изучили кодовете в Numerical Recipes във Fortran 90 , ще видите многобройни случаи на външни, разпространение, суап, imaxloc и други конструкции, които могат да съкратят кода и евентуално да го направят по-ефективен, но за сметка на изискването за използване на пакет от полезни процедури. Аз избрах да избегна това.
  • Избегхах всички изкушения за “подобряване” на самите числови алгоритми. Трябва да получите същите цифрови стойности като оригиналното кодиране.
  • Режимите Zeroin и Fmin са прекодирани с аргументи за допълнителен контрол. Оригиналните функции Zeroin и Fmin все още са включени като обвивки за новите подпрограми BrentZero и BrentMin.
  • Оригиналната библиотека включва преносим генератор за случайни номера. Тъй като сега съществува стандарт във вътрешността на Фортран, пропуснах тази функция.
  • Оригиналната библиотека е написана изцяло с главни букви и авторите са по-скоро привързани към горната буква L като индекс. Променливите сега са с малки букви и аз лично се отвращавам от малката буква “l” като индекс, поради приликата й с числото едно и главната буква. Аз премахнах почти всички такива вероятности.

Едно чудесно премущество на оригиналния код бе, че оригиналните автори не поставят ограничения върху разпространението на кода и може да бъде изтеглен от Netlib . Декларирам, че цялата моя добавена стойност към библиотеката е допринесла за публичния домейн.

 

mCL – media Control Language – Syntax

3. Синтаксис

Тъй като mCL е клон на Tcl (Tool Control Language), неговият синтаксис е подобен на Tcl, който се състои от променлива, команда, заместване и групиране.

Променливата е представена като низ от букви, цифри и ленти с подчертаване на буквите. Можете да използвате променлива без да декларирате нейния тип, да зададете стойност на променлива и да получите променлива стойност чрез заместване. Командата mCL има формата

command  argument1  argument2  …

когато командата е вградена или дефинирана процедура в mCL. Празното място разделя името на командата и нейните аргументи в ред. Новите линии и точка и запетая довършват команди. За да се оцени командата, mCL двигателят замества командните аргументи от ляво на дясно, което прави еднократна подмяна, след което изпълнява командата и връща стойност.

set app [application]
$app create

В този пример командата за задаване задава стойност, върната от приложението, в променливото приложение. Квадратните скоби […] позволяват заместване на командата, т.е. командата в скобите се оценява и нейната стойност е връщащата стойност на командата. Скобите може да бъдат вложени.

Името на командата може да бъде променлива, за да представлява предмет. app е променливо допълнение и $ app е неговата стойност. Доларният знак $ означава променливо заместване със стойността му. $ {variable} се използва за различаване на променлива от други специални знаци.

Подобно на езика C, обратната наклонена черта \ дава възможност за заместване на следващия знак. Например, \” и \$ забраняват специалното значение на тези символи в mCL. \n и \t се интерпретират като нов ред и таблица в поредица. Наклонената черта също така позволява редът да се продължи, когато даден ред е твърде дълъг, за да се напише.

Двойни кавички и къдравите скоби {} събират няколко елемента като един елемент. Двойните кавички дават възможност за вътрешно заместване, а къдравата скоба забранява вътрешното заместване. Важно е да имате балансирана двойка къдрави скоби.

Благодаря

Edwin Powell Hubble

Едуин Пауъл Хъбъл (1889-1953)

Едуин П Хъбъл


И така, кой е Едуин П Хъбъл?

Синът на Вирджиния и Джон Хъбъл, Едуин е роден в Маршфилд, Мисури, САЩ, на 20 ноември 1889 г. Едуин, изглежда, е бил особено близък с дядо си по бащина линия, и дядо му веднъж е публикувал статия на дванадесетгодишния Едуин в местен вестник. Не е изненадващо, че статията е за Марс.

 

Какво образование получава Едуин Хъбъл?

Едуин учи в Уайтън, тъй като баща му има офис в Чикаго. В училище има талант и интерес към атлетиката и футбола. След дипломирането си от Уитън, той получава стипендия за половин такса в Чикагския университет, където учи физика, астрономия и математика. През 1910 г. получава магистърска степен, след което получава престижна стипендия от Родос, за да учи право в колеж Queen’s College, Оксфорд. Обратно в Америка, той преминава изпита през 1913 г. и става адвокат в Луисвил, Кентъки.

 

Какво прави след това?

Отегчен от закона, Едвин решава, че астрономията е за него и отново е влиза в Чикагския университет, за да учи за докторска степен. Спечелва докторантурата си през 1917 г. и почти веднага след завършването на устната защита на неговата дисертация, отива да се бие през Първата световна война.

 

Какво се слува с Едуин след войната?

След като се е включил като капитан в 343-та Пехотна, 86-та дивизия, той се бие във Франция и накрая става майор. През 1919 г. отново става цивилен в Сан Франциско и отива в Обсерваторията на връх Уилсън в Пасадена, Калифорния.

Той се жени за Грейс Бърк на 26 февруари 1924 г. в Пасадена. Тази година той открива Cepheid, променлива звезда, в мъглявината Андромеда. Той успява да измери разстоянието до Великата мъглявина и тази на редица други спирални мъглявини, използвайки мощния 100-инчов телескоп във връх Уилсън.

Хъбъл успява да покаже, че най-близките спирални мъглявини са галактики от звезди, клъстери, прах и газ, като Млечния път.

 
Едуин Хъбъл в ръководния телескоп на 1.2-метровата камера Schmidt на Обсерваторията Паломар.
(Институция Карнеги във Вашингтон)

Едуин Хъбъл прави наблюдения на червеното преместване в светлинни вълни от галактиките. Той успява да заключи, че те се отдалечават от нашата галактика със скорост постоянна до разстоянието между тях. Това е известно като Закона на Хъбъл . Той отбелязва, че колкото по-отдалечена е една галактика, толкова по-бързо се движи. Използвайки тези данни, Хъбъл пресмята, че “Големият взрив” се е случил преди 2 милиона години. По-късно доказателствата показват, че това е било преди около 15-20 милиона години.

 

Дали Едуин Хъбъл участва във Втората световна война?

Едуин Хъбъл продължава да работи на връх Уилсън до 1942 г., когато иска да стане член на въоръжените сили през Втората световна война. Не му е разрешено, но се занимава с военни задължения в Абърдийн. Това води до получаване на  Хъбъл на Медал за заслуги през 1946 г.

 

Какво се случва след тази война?

В края на Втората световна война Едуин Хъбъл възобновява работата си в Обсерваторията на връх Уилсън. Той отдавна иска по-голям телескоп и помага за проектирането на 200-инчов телескоп “Хейл”. Когато той бил най-накрая построен на връх Паломар, Едуин е първият, който го използва.

 

Какво идва след това?

Хъбъл продължава изследването си на връх Уилсън и планината Паломар до смъртта си от церебрална тромбоза на 28 септември 1953 г. Той умрира в Сан Марино, Калифорния. Космическият телескоп “Хъбъл”, стартиран на 24 април 1990 г., е кръстен на него.

 

AN/SPQ-11 COBRA JUDY

AN / SPQ-11 COBRA СЪДИИ

Радарът “Кобра Джуди” е корабна радарна програма, базирана на американския военен коеаб – Observation Island[T-AGM-23]. COBRA JUDY работи от Пърл Харбър и е предназначен за откриване, проследяване и събиране на разузнавателни данни за Америкнски, Руски и други стратегически балистични тестове за  ракети над Тихия океан.

Радарът с поетапно масово предаване AN / SPQ-11 е предназначен да открива и проследява ICBM, изстреляни от Русия в ракетния им обхвата от запад до изток. Cobra Judy работи в обхвата 2900-3100 MHz. Осмоъгълният масив от ленти във формата на буквата “S”, съставен от 12 288 антенни елемента, образува голяма осмоъгълна структура с диаметър около 7 м. и е интегрирана в механично въртяща се стоманена кула. Цялата система тежи около 250 тона и е с височина над 40 метра.

През 1985 Raytheon инсталира радар с X-ленти с честота 9 GHz, използвайки параболична антена за допълване на S-лентовата фазирана матрична система. Антената с височина колкото пет етажна сграда с X-ленти се монтира зад кърмата на кораба и пред поетапния масив. Актуализацията на X-лентата имаше за цел да подобри способността на системата да събира разузнавателни данни на крайната фаза на тестовете за балистични ракети, тъй като работата в X-обхвата предлага по-добра степен на разделителна способност и разделяне на целта.

Радарите S-Band и X-Band се използват за проверка на съответствието на договорите и осигуряват подкрепа за тестовете за разработване на ракети от Организацията за защита на балистичните ракети.Радарите също се използват за научноизследователска и развойна дейност в зони, които не са достъпни за наземни сензори.

 

Корабът се управлява от военно командване на морските операции на САЩ към Центъра за технически приложения на военновъздушните сили на САЩ в базата на военновъздушните сили Патрик във Флорида. Центърът за електронни системи осигурява подкрепа, докато отдела на AIA в Патрик AFB,, Флорида наблюдава ежедневната работа.

 

USNS Observation Island е конвертиран търговски кораб, модифициран първо като платформа за тестване на балистични ракети на флота, а след това като платформа за проследяване на ракети. USNS Observation Island работи по целия свят и наблюдава чуждестранни тестове за ракети за командването на разузнавателните служби на ВВС. Военноморското Командване управлява кораби, натоварени с цивилни екипажи и под командването на цивилен началник. Тези кораби, означени със сини и златни ленти, са “Военноморски кораби на САЩ”, или “Кораби на Съединените щати”, какъвто е случаят с командировани кораби.

 

U.S.S. Observation Island започва кариерата си като SS Empire State Mariner. Нейният кил е положен на 15 септември 1952 г. в Ню Йорк в корабостроителна корпорация, Камдън, Ню Джърси. След кратка кариера като търговец, тя е поставена в морския флот. На 10 септември 1956 г. плавателният съд е прехвърлен на флота за използване като морско съоръжение за тестване и оценка на системата за флип-балистични ракети с оръжие.

 

През декември 1958 г. корабът е пуснат в експлоатация под името USS Observation Island (EAG-154). По време на преобразуването са направени обширни промени в надстройката и задържането на инсталацията на първата система за оръжие на Fleet Ballistic Missile (FBM). От пускането в експлоатация до 27 август 1959 г. усилията на офицерите и мъжете са насочени към първото изстрелване на ракета “Поларис” в морето. Първото изстрелване на тестова ракета “Поларис” в морето бе успешно проведено от палубата на USS Observation Island – около седем ракети са изстреляни край нос Канаверал през септември 1959 г. След този важен етап и последвалото изстрелване на други ракети “Поларис” корабът започва да поддържа изстрелите на Поларис от подводниците на ФБМ; USS Джордж Вашингтон (SSBN 598) е първата подводница. На 15 декември 1960 г. Observation Island получава наградата за командир на военноморските сили за представянето си по време на първите изстрели в морето на Поларис. На 1 март 1961 г. корабът успешно пуска новата ракета “А2 Поларис” и на 23 октомври подкрепя първото успешно пускане на новата A2 Polaris от подводница на ФБМ, нареченаUSS Ethan Allen (SSBN 608).

През ноември и декември 1961 г. Insight Observation играе новата роля на изследователски кораб на Атлантическия ракетен обхват. През януари корабът се завръща Морската корабостроителница в Норфолк за по-нататъшно модифициране в подготовката за изстрелване на новата A3 Polaris и след завръщането си в Порт Канаверал през март 1962 г., се връща към функцията си на подводничарски кораб за подпомагане на ФБМ, като това продължава и през лятото. Септември и октомври 1962 г. откриха, че Observation Island изстрелва ракети “А2 Поларис” в Атлантическия ракетен обсег. В края на октомври корабът заминава за Хавай през Панамския канал за подобни изстрели в ракетния обсег на Тихия океан. Междувременно ролята на подводната подръжка бе поета от Разрушителите, монтиращи комуникационно и телеметрично оборудване в преносими микробуси. До този момент, всяка подводница Поларис беше подкрепена от Observation Island.

 

Observation Island отпътува Пърл Харбър в началото на декември и пристига в Порт Канаверал преди Коледа. От края на април до началото на юни 1963 г. Observation Island разширява функцията си в океанографското проучване в океанските райони на Атлантическия ракетен обсег. След завръщането си от операциите за наблюдение, на 17 юни 1963 г., Observation Island направи първото успешно морско изстрелване на новата ракета “А3 Поларис”. Непосредствено след изстрелването на втора успешна A3 Polaris на 21 юни, Observation Island отива Морската корабостроителница в Норфолк за допълнителни модификации. Корабът се е върнал в Порт Канаверал в края на август 1963 г. и е подкрепил изстрелването на подводници на ФБМ, включително първото потопено изстрелване на ракета А3 Поларис от USS Андрю Джаксън (SSBN 619) през октомври. На 16 ноември 1963 г. Observation Island е кораб-домакин на покойния президент Кенеди, когато той се качва на борда, за да наблюдава изстрелването на Поларис А2 в морето от подводната подводница USS Andrew Jackson. През зимата на 1963 г. корабът продължава да подкрепя пускането на Polaris от подводници, както и да прави няколко пускания от собствените си палуби.

 

През март 1964 г. корабът отпътува от Порт Канаверал за операции по изстрелване и подпомагане в ракетния обсег на Тихия океан. В началото на юни корабът се завръща в дома си след кратка пауза на пристанището в Акулуко, Мексико. През месеците от юни до октомври 1964 г. Observation Island отново беше открит изпълняващ познатата му функция като подводничарски кораб за подпомагане на подводницата, работещ от Порт Канаверал. На 14 октомври 1964 г. корабът се оттегля от пристанището си за операции в подкрепа на ракетния обсег на Тихия океан. Свободните пристанищата по това време включваха Пърл Харбър, Хавай и Хонг Конг.Разгръщането завършва с пристигането на кораба в Порт Канаверал на 9 април 1965 г. Корабът се завръща в морската корабостроителница в Норфолк през лятото на 1965 г. за период от приблизително два месеца. След този период на ремонт корабът се завръща към ежедневните операции по поддръжката на “Порт Канаверал” за подводници за ФБМ и проучване в Атлантическия ракетен обсег.

 

Корабът е преобразуван в Норфолската военноморска корабостроителница и в резерв от септември 1972 г. На 18 август 1977 г. Observation Island е бил повторно акумулиран от  морската администрация на американския флот и прехвърлен на командването на Военноморските сили и прекласифициран като T-AGM 23.

 

На 14 май 1999 г. Raytheon Support Services, Бърлингтън, Масачузетс, получава договор за фиксирана цена от 11,824,227 долара, за да осигури експлоатация и поддръжка от 14 май 1999 г. до 13 май 2000 г. на радарните системи Cobra Judy и Cobra Gemini разположени на Observation Island USNS и USNS Invincible, съответно. Бяха поискани четири фирми и бяха получени три предложения. Очакваната дата за завършване на договора е 13 май 2000 г. Дата на издаване на заявката е 20 октомври 1998 г. Дата на приключване на договарянето е 13 май 1999 г. 668-та логистична ескадрила, Kelly AFB, Texas, е договарящата дейност.

Общи характеристики, на USNS Observation Island

Строител: Нюйоркско корабостроене

Преобразуване: Мериленд корабостроене и компания Drydock

Електроцентрала: Два котела, насочени турбини, един вал и 19,250 конски сили

Дължина: 564 фута (172 метра)

Греда: 76 фута (23 метра)

Изместване: 17 015 тона (15 468 метрични тона)

Скорост: 20 kts (23 mph, 37 км / ч)

Кораб:

USNS Observation Island (T-AGM 23)

Екип: 143 цивилни

Източници и методи

 

Парадоксът на рождените дни


Филип Дж. Ерделски

4 юли 2001 г.

Моля, изпратете коментари, корекции и допълнения към уеб администратора на адрес pje@efgh.com.

 

Един от любимите проблеми в курсовете за елементарни вероятности и статистика е проблема за рождения ден: Каква е вероятността поне двама от случайно избраните хора да имат същия рожден ден? (Същият месец и ден, но не непременно същата година.)

Втората част на проблема: Колко голяма трябва да бъде N, така че вероятността да е по-голяма от 50%? Отговорът е 23, който удря повечето хора като необосновано малка. Поради тази причина проблемът често се нарича Парадокс на рождените дни. Някои остри умове препоръчват да залагате на равностойни пари, че има дублирани рождени дни сред всяка група от 23 или повече души. Предполага се, че има някои недобре информирани досадници, които ще приемат залога.

Проблемът обикновено се опростява, като се приемат две неща:

1. Никой не е роден на 29 февруари.
2. Рождените дни на хората са равномерно разпределени през останалите 365 дни от годината.

 

Едно от първите неща за забелязване на този проблем е, че е много по-лесно да се реши допълнителният проблем: Каква е вероятността N случайно избрани хора да имат различни рождени дни? Можем да напишем това като рекурсивна функция:

double different_birthdays(int n)
{
 return n == 1 ? 1.0 : different_birthdays(n-1) * (365.0-(n-1))/365.0;
}

 

Очевидно е, че за N = 1 вероятността е 1. За N> 1, вероятността е продукт на две вероятности:


  1. Това, че първите хора от N-1 имат различни рождени дни.
    2. Това че N-ти човек има рожден ден, различен от някой от първите N-1.

Програмата за показване на вероятностите е нещо подобно:

void main(void)
{
 int n;
 for (n = 1; n <= 365; n++)
   printf(“%3d: %e\n”, n, 1.0-different_birthdays(n));
}

 

Резултатът е нещо подобно:

1: 0.000000e+00
 2: 2.739726e-03
 3: 8.204166e-03
 4: 1.635591e-02
 5: 2.713557e-02
     ***
20: 4.114384e-01
21: 4.436883e-01
22: 4.756953e-01
23: 5.072972e-01
24: 5.383443e-01
25: 5.686997e-01
     ***

Вероятността поне двама от N да имат същия рожден ден да се покачва над 0.5, когато N = 23.

НО КАКВО СТАВА С ВИСОКОСНАТА ГОДИНА?

Оригиналният проблем може да бъде решен с плъзгащо правило, което точно направих, когато го чух за първи път преди много години.

Ако добавим 29 февруари към микса, става доста по-сложно. В този случай правим някои допълнителни допускания:

1. Равен брой хора се раждат в дни, различни от 29 февруари.
2. Броят на хората, родени на 29 февруари, е една четвърт от броя на хората, родени всеки друг ден.

 

Следователно вероятността, че случайно избран човек е роден на 29 февруари е 0,25 / 365,25, а вероятността случайно избран човек да е роден на друг определен ден е 1 / 365,25.

Вероятността  N лица, вероятно включително един роден на 29 февруари, да имат различни рождени дни е сумата от две вероятности:

1. Че хората N са родени на N различни дни, различни от 29 февруари.
2. Че хората N са родени на N различни дни и включват едно лице, родено на 29 февруари.
Вероятностите се добавят, защото двата случая се изключват взаимно.

Сега всяка вероятност може да бъде изразена рекурсивно:

double different_birthdays_excluding_Feb_29(int n)
{
 return n == 1 ? 365.0/365.25  :
   different_birthdays_excluding_Feb_29(n-1) * (365.0-(n-1)) / 365.25;
}

double different_birthdays_including_Feb_29(int n)
{
 return n == 1 ? 0.25 / 365.25 :
   different_birthdays_including_Feb_29(n-1) * (365.0-(n-2)) / 365.25 +
   different_birthdays_excluding_Feb_29(n-1) * 0.25 / 365.25;
}

 

Програмата за показване на вероятностите е нещо подобно:

void main(void)
{
 int n;
 for (n = 1; n <= 366; n++)
   printf(“%3d: %e\n”, n, 1.0-different_birthdays_excluding_Feb_29(n) –
     different_birthdays_including_Feb_29(n));
}

 

Резултатът е нещо подобно:

 1: -8.348357e-18
 2: 2.736445e-03
 3: 8.194354e-03
 4: 1.633640e-02
 5: 2.710333e-02
     ***
20: 4.110536e-01
21: 4.432853e-01
22: 4.752764e-01
23: 5.068650e-01
24: 5.379013e-01
25: 5.682487e-01
     ***
Както се очаква, вероятностите са малко по-ниски, защото има по-малка вероятност за съвпадение на рождени дни, когато има повече възможни рождени дни. Но най-малкият брой с вероятност по-голям от 0.5 е все още 23.

Разбира се, един математически пурист може да твърди, че преходните години не винаги идват на всеки четири години, така че изчисленията се нуждаят от по-нататъшно изменение. Последното четиригодие, което не беше преходен период, беше 1900, а следващото – 2100. Броят на сега живеещите, родени през 1900 г., е толкова малък, че мисля, че нашето сближаване е валидно за всички практически цели. Но вие сте добре дошли да направите необходимите модификации, ако желаете.

 

Парадоксът на рождените дни има последици отвъд света на залаганията. Стандартна техника за съхранение на данни е да присвоите на всеки елемент номер, наречен хеш-код. След това елементът се съхранява в контейнер, съответстващ на неговия хеш-код. Това ускорява извличането, защото трябва да се търси само един контейнер. Парадоксът на рождените дни показва, че вероятността две или повече елементи да завършат в същия контейнер е висока дори ако броят на елементите е значително по-малък от броя на контейнерите. Следователно във всички случаи е необходимо ефективно боравене с контейнери, съдържащи два или повече елемента.

Translation from English by Cvetomira Mikovska

Source: http://www.efgh.com/math/birthday.htm

Мъглавата империя

Винай Лал

Внукът на Тамерлан, Бабар, който от майка си е слязъл от известния Дженгиз хан, дойде в Индия през 1526 г. по искане на индийски губернатор, който потърси помощта на Бабар в борбата му срещу Ибрахим Лоди, последният главата на Делхи Султанат. Бабар побеждава Лоди в Панипат, недалеч от Делхи, и така дойде да установи Mughal империята в Индия. Бабар управлявал до 1530 г. и бил последван от неговия син Хумайун, който даде на империята първите си отличителни белези. Но той е синът на Хумайун, Акбар Велики, който обикновено е описан като славата на империята. Акбар царува от 1556 до 1605 г. и разширява своята империя на запад като Афганистан и на юг като река Годавари. Акбар, макар и мюсюлманин, е запомнен като толерантен владетел и дори е започнал нова вяра, Din-i-Ilahi, която е опит да се съчетае ислямът с хиндуизма, християнството, джайнизма и други вероизповедания. Той спечели над хиндуистите, като ги нарече на важни военни и граждански позиции, като им даде почести и се ожени за индуски принцеса.

 

Радва се при раждането на принц Салим (Джахангир). Mughal, c. 1590. (Кликнете за голям изглед на изображения.)

Кбар е наследен от сина му Салим, който е носил титлата Джахангир . По време на управлението му (1605-1627 г.), Джахангир консолидира печалбите, направени от баща си. Съкровищната култура на могъците процъфтява под неговото управление; подобно на неговия велик баща Бабар, той имал интерес към градините, а картината на Мъгъл вероятно е достигнала своя зенит по времето на Джахангир. Джахангир се оженил за Нур Джахан, “Светлината на света”, през 1611 г. Малко след смъртта му през октомври 1627 г. неговият син, Шах Джахан, успявал на трона. Той наследи една огромна и богата империя; а в средата на века това беше може би най-голямата империя в света, проявяваща степен на централизиран контрол, рядко срещана преди. Шах Джахан изостави изключително богато архитектурно наследство, което включва Тадж Махал и стария град Делхи, Шахянабад. Тъй като той очевидно лежеше умира през 1658 г., избухнала една последователна война между четиримата си сина. Двамата основни претенденти на трона бяха Дара Шикох, който беше подкрепян от онези благородници и офицери, които бяха посветени на еклектичната политика на предишни владетели, и Аурангзеб , който беше облагодетелстван от могъщи мъже, по-склонни да превърнат Мурската империя в ислямска държава, подчинена на законите на Шариата. Това е Аурангзеб, който триумфира и въпреки че Mughal Empire видя още по-нататъшно разширяване в ранните години на своето дълго царуване (1658-1707), от по-късната част на седемнадесети век империята започва да се разпада.

Урангзеб остава силно противоречива фигура и никой монарх не е бил по-подчинен на комунистическото четене на индийската история. Той се възхищава от мюсюлмански историци за прилагането на закона на шариата и за отричане на политиките, преследвани от Акбар; сред хиндуисти, миряни и историци, той е запомнен като мюсюлмански фанатик и фанатик. В този случай, далечната империя на Аурангбеб в крайна сметка избягваше разбирането му и изглежда, че сред селското стопанство е създадено значително недоволство. След смъртта на Аурангзеб през 1707 г. много от неговите васали се утвърждават като суверенни владетели и така започва периодът на т.нар. “Наследнически държави”. Мурската империя оцелява до 1857 г., но нейните владетели били, след 1803 г., пенсионери от Източно-индийската компания. Последният император, сенилният Бахадур Шах Зафар, бил поставен под съд, за да се води войската на бунтовниците от 1857 г. и за подбудителство. Той беше осъден и транспортиран до Рангун, за да прекара остатъка от живота си на извънземна почва.

Мурската империя, 1526-1707         Източник: Ф. Робинсън, Атлас на ислямския свят от 1500 (Оксфорд, 19822), стр.59.

Copyright with this piece in English vests in the author, Vinay Lal.
Original source: http://southasia.ucla.edu/history-politics/mughals-and-medieval/