Random number generation

12
Random Number Generation Стефан Байчев [email protected] ТУ-София, ФКСУ - КТПП Факултетен Номер 281611007 Магистър - изравнително обучение

description

Random number generation

Transcript of Random number generation

Page 1: Random number generation

Random Number Generation

Стефан Байчев[email protected]ТУ-София, ФКСУ - КТППФакултетен Номер 281611007Магистър - изравнително обучение

Page 2: Random number generation

©Stefan BaychevRandom Number Generation

Въведение в програмирането често се налага използването на

някакъв набор от случайни стойности под една или друга форма

професионалистите в областта на софтуерното инженерство не са напълно запознати със спецификите на тази тематика и често допускат грешки в работата си

Генераторите на Случайни Числа играят важна роля в математиката, криптографията, хазартните игри, симулациите чрез метода “Монте Карло” и др.

Page 3: Random number generation

©Stefan BaychevRandom Number Generation

Опростено Математическо Представяне на ГСЧ

Математически погледнато ГСЧ могат да бъдат дефинирани като структура (S; μ; f; U; g), Където S представлява краен набор от състояния, μ е

разпределената вероятност (дистрибуция) на S използвана за избирането на началното състояние (или сито) s0, в отношението f : S -> S е преходна функция, U представлява краен набор от изходни символи, а пък g : S -> U е изходящата функция. Състоянието еволюира спрямо броят проявления

sn = f(sn), където n ≥ 1. Изходът при стъпка n, е un = g(sn)∈U. Всъщност un, представлява така наречените случайни числа генерирани от ГСЧ. Понеже S е крайно, генераторът ще се върне в един бъдещ момент към състояние, което вече е посетил (и.к. si+j = si за някой i ≥ 0 и j > 0). Тогава, sn+j = sn и un+j =

un за всяко n ≥ i. Най-малкото j > 0 за което това се случи се нарича дължина на периода ρ. То

не може да надвишава кардиналостта на S. А по конкретно, ако b бита биват използвани, за да представят състоянието, тогава ρ ≤ 2b. Добрите ГСЧ са направени, така че тяхната дължина на периода да бъде възможно най-

близка до тази горна граница. [1]

[1] Random Numbers. Pierre L'Ecuyer, Universite de Montreal, Montreal, Quebec, Canada

Page 4: Random number generation

©Stefan BaychevRandom Number Generation

Случайност, Случайни Числа сред физическите устройства

Най-скъпите Хардуерни ГСЧ изполват за своите изчисления, природни феномени като радиоактивен разпад или статичен „шум“

Нормалният Компютър запълва своят набор от ентропия чрез „случайни“ явления като: времето между различното клавишно натискане, движения на мишката, drive seek timing, неизползвана RAM памет и др. [2]

[2] http://blog.cryptographyengineering.com/2012/02/random-number-generation-illustrated.html

Page 5: Random number generation

©Stefan BaychevRandom Number Generation

Примери

Randu: Линейно “Съгласуван” Генератор – Linear Congruential Generator - лош ГСЧ

Netscape's SSL debacle: лош избор на входни дани за ГСЧ

Mrg32k3a: един положителен пример за ГСЧ, който има добра „случайност“, относително дълъг период и е лесен за внедряване алгоритъм - Комбиниран Много-Рекурсивен ГСЧ : Combined Multiple Recursive Generator (CMRG)

Page 6: Random number generation

©Stefan BaychevRandom Number Generation

Съвети при Използването и/или Създаването на ГСЧ

Входните данни за ГСЧ трябва да бъдат предварително обработени по определен начин, за да се предотвратят атаки чрез заложени входни данни – chosen input attacks

Входната предварителна обработка трябва да работи по начин, който да предотвратява атаки чрез „познати“ входни данни – known input attacks; това да става като се добавят непознати (за атакуващият) данни във входният смесителен процес на данните

ГСЧ трябва да изпозва колкото е възможно повече различни източници за входните данни, за да бъде избегната вероятността за цялостна грешка идваща от само едно жизненоважно място (като източник на входни данни)

трябва да има проверки за изходните от ГСЧ данни – дали са правилни [6]

[6] http://www.cypherpunks.to/~peter/06_random.pdf

Page 7: Random number generation

©Stefan BaychevRandom Number Generation

Обощение и Заключителни Мисли

няма такъв всеобхватен ГСЧ, който да гарантира, че не ще има каквито и да е дефекти в работата си

ГСЧ според специфичната нужда, дали трябва да е бърз, “истински” случаен, равномерен и т.н.

няма едно решение за всеки проблем съществуват такива, като следните, които имат една доста

добра теоретична обоснованост: Mersenne Тwister Combined MRGs of L'Ecuyer Combined LCGs of L'Ecuyer and Andres Combined Tausworthe Generators of L'Ecuyer

Page 8: Random number generation

©Stefan BaychevRandom Number Generation

Въпроси?

БлагодаряВиза

Вниманието!!

Page 9: Random number generation

©Stefan BaychevRandom Number Generation

Триизмерна равнина с 100, 000 стойности, в интервала (0, 1), генерирани чрез RANDU. Всяка точка представлява 3 последователни псвевдо –

случайни стойности. Ясно се вижда как стойностите попадат в 15 двуизмерни равнини [3]

[3] http://en.wikipedia.org/wiki/RAND

Page 10: Random number generation

©Stefan BaychevRandom Number Generation

a = mixbits( time.tv_usec );

b = mixbits( getpid() + time.tv_sec + ( getppid() << 12 );

seed = MD5( a, b );

nonce = MD5( seed++ );

key = MD5( seed++ )

Page 11: Random number generation

©Stefan BaychevRandom Number Generation

Имаме eдин Обектно-ориентиран пакет за ГСЧ,

реализиран в C на базата на Mrg32k3a на канадският

професор L'Ecuyer [4]. Той представлява Комбиниран

Много-Рекурсивен ГСЧ, (осъществен в 64-битова

архитектура с плаваща десетична запетая) като има

дължина на периода ρ ≈ 2191. “Ситото”/ The Seeding на ГСЧ

и състоянието на потока по време на която и да е стъпка е

6-измерен вектор с 32-битови числа

[4] Canada Research Chair in Stochastic Simulation and Optimization

Page 12: Random number generation

©Stefan BaychevRandom Number Generation

Vector Statistical Library (VSL) Performance Data Intel Math Kernel Library 10.3 Update 9VSL random number generators are optimized for latest Intel(R) processors, including Intel(R) Xeon(R) processor X5570, Intel(R) Xeon(R) processor E7-4870, and Intel(R) Xeon(R) E5-2690 processor. For earlier Intel processors, VSL generators are fully functional, yet not specifically optimized.The value of CPE (Clocks Per Element), which is independent from the processor clock rate, is selected as a unit of measurement. For example, if the generator performance is equal to 10 CPE and the processor rate is 1 GHz, then the generator

will produce 108 random numbers per second [5][5] http://software.intel.com/sites/products/documentation/hpc/mkl/vsl/vsl_performance_data.htm