Тест "покер"
Тест "покер"
Третий тест известен под названием "покер" (poker test). Случайные числа группируются в наборы по пять, а затем преобразуются в "карты", которые представляют собой цифры от 0 до 9. После этого определяется количество разных карт в каждом наборе (оно будет равно от одного до пяти) и полученные результаты разбиваются на категории. Поскольку вероятность пятикратного повторения одной и той же карты достаточно низка, случай выпадения только одной карты, как правило, включается в категорию "две разные цифры". К полученным четырем категориям применятся тест по критерию хи-квадрат (три степени свободы). Вероятность возникновения события для каждой категории вычислить не так уж легко (к тому же математические выкладки основаны на использовании комбинаторных значений, называемых числами Стерлинга), поэтому вычисления в этой книге не приводятся. Если вам интересно, то подробное описание можно найти в [11].
Листинг 6.7. Тест "покер"
procedure PokerTest(RandGen : TtdBasePRNG;
var ChiSquare : double;
var DegsFreedom : integer);
var
i, j, jlBucketNumber, NumFives : integer;
Accum, Divisor, Expected, ChiSqVal : double;
Bucket : array [0..4] of integer;
Flag : array [0..9] of boolean;
p : array [0..4] of double;
begin
{подготовительные операции}
FillChar(Bucket, sizeof(Bucket), 0);
NumFives PokerCount div 5;
{вычислить вероятности для каждой категории событий, алгоритм Кнута}
Accum := 1.0;
Divisor := IntPower(10.0, 5);
for i := 0 to 4 do
begin
Accum := Accum * (10.0 - i);
p[i] := Accum * Stirling(5, succ(i)) / Divisor;
end;
{для каждой группы из пяти случайных чисел преобразовать все значения и числа от 1 до 10, определить количество разных цифр}
for i := 1 to NumFives do
begin
FillChar(Flag, sizeof(Flag), 0);
for j := 1 to 5 do begin
Flag [trunc(RandGen.AsDouble * 10.0)] :=true;
end;
BucketNumber := -1;
for j := 0 to 9 do
if Flag[j] then
inc(BucketNumber);
inc(Bucket[BucketNumber]);
end;
{объединить две первые категории - это будет сумма категорий "все цифры одинаковы" и "две разные цифры"}
inc(Bucket[1], Bucket[0]);
Expected := (p[0]+p[1]) * NumFives;
ChiSqVal := Sqr(Expected - Bucket[1]) / Expected;
{обработать другие категории}
for i := 2 to 4 do
begin
Expected :=p[i] * NumFives;
ChiSqVal := ChiSqVal + (Sqr (Expected - Bucket [i]) / Expected);
end;
{вернуть значения}
ChiSquare := ChiSqVal;
DegsFreedom := 3;
end;
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Тест 1
Тест 1 Вопрос 1Платформа Андроид основывается на операционной системе:LinuxMACUnixWindows CEWindows XPВопрос 2Архитектура платформы Андроид состоит из:Приложений, фреймворка приложений, библиотек, среды выполнения Андроид, ядра Linux.Приложений, библиотек, фреймворка библиотек, среды
Тест 2
Тест 2 Вопрос 1Для чего предназначено файловое расширение. apk?Application PackageApplication Program KitAndroid Proprietary KitAndroid PackageВопрос 2Когда вы распространяете коммерческое приложение, вы хотите подписать его своим собственным ключом.TrueFalseВопрос 3Как Google проверяет на вирусы в Android
Тест 3
Тест 3 Вопрос 1Что выполняет следующий код:Intent intent = new Intent (FirstActivity. this, SecondActivity. class);Создает скрытое намерение.Создает неявное намерение.Создает явное намерение.Запускает активность.Вопрос 2Что из следующего не верно для Intents?Активирует Activity.Активирует Service.Активирует
Тест 4
Тест 4 Вопрос 1Какие из следующих диалоговых окон поддерживаются Android?AlertDialogProgressDialogDatePickerDialogTimePickerDialogTextInputDialogВопрос 2В этом намерении отправитель указывает тип получателя:Неявное намерениеЯвное намерениеОбаВопрос 3Какие из следующих типов данных поддерживаются
Тест 5
Тест 5 Вопрос 1Стили, строки и массивы размещаются в:/res/layout/res/strings/res/arrays/res/styles/res/valuesВопрос 2Dalvik VM является частью:Core LibrariesLibrariesApplicationKernelAndroid RuntimeВопрос 3Content Provider являются частью:ApplicationCore librariesApplication FrameworkKernelLibrariesВопрос 4Чем является R. java?Авто-сгенерированный файл
Тест 11
Тест 11 Вопрос 1В чем разница между линейной планировкой и относительным макетом?Линейная планировка – организует элементы в вертикальном или горизонтальном режиме. Относительный макет – организует элементы относительно друг друга.Линейная планировка – организует
Покер планирования
Покер планирования В 2002 году Джеймс Греннинг написал отличную статью[46] с описанием «покера планирования». Эта разновидность широкополосного дельфийского метода стала настолько популярной, что несколько разных компаний использовали идею для создания маркетинговых
Что станет с тест-директором и тест-менеджером
Что станет с тест-директором и тест-менеджером Как все эти ролевые изменения отразятся на менеджерах, директорах и вице-президентах по тестированию? Их станет меньше. Те из них, у кого есть технические знания, перейдут на другие роли, более подходящие их инженерной
Тест № 1
Тест № 1 Для проведения первого теста были использованы случайным образом отобранные из коллекции (579 штук) четыре экземпляра вредоносного кода:? TrojanDownloader.13547;? Backdoor. Win32Optix.b;? Trojan-Win32PSW.QQRob.16;? Trojan-Win32PSW.QQShou.EH.Каждый экземпляр был пропущен через PeStubOEP (программа предназначена
Тест № 2
Тест № 2 Тест включает в себя упаковку одного вируса несколькими упаковщиками. В качестве «зло-кода» был использован известный Virus.Win32.Neshta.b. Итак, результаты.Пропускаем нашего "нечто" через WinUpack:? Nod32 2.7 "-";? "Антивирус Касперского 6.0" "+";? Vba32 "+" (рис. 5.13). Рис. 5.13. Neshta – не уйдет!
Тест № 3
Тест № 3 В данном тесте был использован генератор вирусов APOKALIPSES. Из десяти сгенерированных экземпляров Vba32 обнаружил 8, Nod32 2.7 – 9, «Антивирус Касперского 6.0» обнаружил все.Для проведения четвертого теста был использован свеженаписанный вирус, форматирующий диски. Данный
Тест № 4
Тест № 4 Рис. 5.16. «В порядке!»"Антивирус Касперского 6.0" также ничего не обнаружил (рис. 5.17). Рис. 5.17. «Опасных объектов не обнаружено!»Лишь Nod32 обнаружил самописный вирус, классифицировав его как модификацию (рис. 5.18). Рис. 5.18. Здесь NOD32 показал себя с самой лучшей
Тест № 5
Тест № 5 Тест на противодействие обфускации. Подправим наш экземпляр (Trojan. Downloader.Win32.Zlob) вручную. Для этого внедрим пару неизвестных инструкций в оригинальный код. Зачем? Чтобы усложнить задачу по эмулированию новых инструкций эвристическим анализатором тестируемого
Тест № 6
Тест № 6 Eicar Test. Именно этот тест используется для проверки работоспособности антивирусных программ. Обоснованность проведения подобного теста при анализе эвристики особенно очевидна: стандартизованность EICAR позволяет получать результаты с минимальными погрешностями
Тест № 7
Тест № 7 Тест на обнаружение полиморфных вариантов. Напомню нашим читателям, что в основе полиморфизма стоит способность вируса к изменению своего кода, так называемой «мутации» – образованию неузнаваемых антивирусом форм, что, к слову будет сказано, является идеальным