SEMINARSKI RAD IZ VEROVATNOĆE I STATISTIKE. TEMA: Test za proveru znanja

Similar documents
Mathcad sa algoritmima

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

Uvod u relacione baze podataka

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

Red veze za benzen. Slika 1.

Fajl koji je korišćen može se naći na

Projektovanje paralelnih algoritama II

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu

AIR CURTAINS VAZDU[NE ZAVESE V H

TEORIJA SKUPOVA Zadaci

ANALYSIS OF INFLUENCE OF PARAMETERS ON TRANSFER FUNCTIONS OF APERIODIC MECHANISMS UDC Života Živković, Miloš Milošević, Ivan Ivanov

Fibonaccijev brojevni sustav

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE

1.1 Algoritmi. 2 Uvod

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle).

Šime Šuljić. Funkcije. Zadavanje funkcije i područje definicije. š2004š 1

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva.

Preliminary Program for PHD students- English language

Mathematics and Computer-Aided Modeling in Sciences Intensive School Novi Sad Preliminary Program for PHD students- English language

MAGNETIC FIELD OF ELECTRICAL RADIANT HEATING SYSTEM

Metrički prostori i Riman-Stiltjesov integral

Konstekstno slobodne gramatike

Sveučilište u Zagrebu Fakultet prometnih znanosti Diplomski studij. Umjetna inteligencija - Genetski algoritmi 47895/47816 UMINTELI HG/

DEVELOPMENT OF MATHEMATICAL MODELS TO PREDICT THE EFFECT OF INPUT PARAMETERS ON FEED RATE OF A RECIPROCATORY TUBE FUNNEL FEEDER

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike. Sortiranje u linearnom vremenu

ANALYSIS OF THE RELIABILITY OF THE "ALTERNATOR- ALTERNATOR BELT" SYSTEM

On the relation between Zenkevich and Wiener indices of alkanes

THE BOUNDARY VALUES OF THE PUNCH DIAMETER IN THE TECHNOLOGY OF THE OPENING MANUFACTURE BY PUNCHING UDC

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

BROJEVNE KONGRUENCIJE

Sortiranje podataka. Ključne riječi: algoritmi za sortiranje, merge-sort, rekurzivni algoritmi. Data sorting

STRUCTURAL VEHICLE IMPACT LOADING UDC =111. Dragoslav Stojić #, Stefan Conić

Turingovi strojevi Opis Turingovog stroja Odluµcivost logike prvog reda. Lipanj Odluµcivost i izraµcunljivost

The temperature dependence of the disproportionation reaction of iodous acid in aqueous sulfuric acid solutions

Keywords: anticline, numerical integration, trapezoidal rule, Simpson s rule

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012

Primena Katalanovih brojeva i nekih kombinatornih problema u kriptografiji

UNIVERZITET U BEOGRADU MATEMATIČKI FAKULTET

IDENTIFICATION OF DONOR LINES FOR IMPROVING FRUIT YIELD OF K 35 x K 12 EGGPLANT HYBRID

Šta je to mašinsko učenje?

An Algorithm for Computation of Bond Contributions of the Wiener Index

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008

Đorđe Đorđević, Dušan Petković, Darko Živković. University of Niš, The Faculty of Civil Engineering and Architecture, Serbia

Metoda parcijalnih najmanjih kvadrata: Regresijski model

ZANIMLJIVI ALGEBARSKI ZADACI SA BROJEM 2013 (Interesting algebraic problems with number 2013)

3. Programiranje u Matlab-u

Univerzitet u Beogradu. Matematički fakultet. Master rad. Principi matematičke indukcije i rekurzije u nastavi. Matematike i računarstva

A STUDY ON NATURAL CONVECTION HEAT TRANSFER IN COMPLEX BOUNDARIES

ANALYTICAL AND NUMERICAL PREDICTION OF SPRINGBACK IN SHEET METAL BENDING

Quantum Statistical Aspects of Charge Transfer on Electrodes~'

PARAMETRIC OPTIMIZATION OF EDM USING MULTI-RESPONSE SIGNAL-TO- NOISE RATIO TECHNIQUE

DYNAMIC HEAT TRANSFER IN WALLS: LIMITATIONS OF HEAT FLUX METERS

HENDERSON'S APPROACH TO VARIANCE COMPONENTS ESTIMATION FOR UNBALANCED DATA UDC Vera Djordjević, Vinko Lepojević

IMPROVEMENT OF HIPPARCOS PROPER MOTIONS IN DECLINATION

Fall 2015 Lecture 14: Modular congruences. cse 311: foundations of computing

Uvod u dinamičko programiranje

Asian Journal of Science and Technology Vol. 4, Issue 08, pp , August, 2013 RESEARCH ARTICLE

ADAPTIVE NEURO-FUZZY MODELING OF THERMAL VOLTAGE PARAMETERS FOR TOOL LIFE ASSESSMENT IN FACE MILLING

Funkcijske jednadºbe

FTN Novi Sad Katedra za motore i vozila. Drumska vozila Uputstvo za izradu vučnog proračuna motornog vozila. 1. Ulazni podaci IZVOR:

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA

Mehurasto sortiranje Brzo sortiranje Sortiranje učešljavanjem Sortiranje umetanjem. Overviev Problemi pretraživanja Heš tabele.

False. Vrednost XIC Stanje bita "a" naredbe 0 True. 1 False. Bit na adresi "a" dobija vrednost uslov. Bit na adresi "a" dobija vrednost uslov

Pellova jednadžba. Pell s equation

GIS AND REMOTE SENSING APPLICATION IN GEOLOGICAL MAPPING AND 3D TERRAIN MODELING: A CASE STUDY IN EGHEI UPLIFT, LIBYA

Termodinamika. FIZIKA PSS-GRAD 29. studenog Copyright 2015 John Wiley & Sons, Inc. All rights reserved.

REVIEW OF GAMMA FUNCTIONS IN ACCUMULATED FATIGUE DAMAGE ASSESSMENT OF SHIP STRUCTURES

NAPREDNI FIZIČKI PRAKTIKUM 1 studij Matematika i fizika; smjer nastavnički MJERENJE MALIH OTPORA

Numeričke metode u ekonomiji Dr. sc. Josip Matejaš, EFZG

DISKRETNI LOGARITAM. 1 Uvod. MAT-KOL (Banja Luka) ISSN (p), ISSN (o) Vol. XVII (2)(2011), 43-52

LANDSCAPE SHAPE INTERPOLATION FOR DEFINING SPATIAL PATTERN OF BEECH GENETIC DIVERSITY IN SERBIA

NUMERICAL STUDY OF HEAT TRANSFER DURING NUCLEATE POOL BOILING

Algoritmi i programiranje

PRIMENA FAZI LOGIKE ZA REŠAVANJE NP-TEŠKIH PROBLEMA RUTIRANJA VOZILA I

FOCAL LENGTH DETERMINATION FOR THE 60 cm TELESCOPE AT ASTRONOMICAL STATION VIDOJEVICA

Konstrukcija i analiza algoritama

Determination of Synchronous Generator Armature Leakage Reactance Based on Air Gap Flux Density Signal

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

Temperature dependence of the Kovats retention indices for alkyl 1,3-diketones on a DB-5 capillary column

THE PROBLEM OF DIOPHANTUS FOR INTEGERS OF Q( 3) Zrinka Franušić and Ivan Soldo

ON ORBITS FOR A PARTICULAR CASE OF AXIAL SYMMETRY

Velimir Abramovic: KOLIKO IMA BESKONACNOSTI U MATEMATICI? (Iz Osnovi Nauke o Vremenu )

Plaket-Burman dizajn u proceni robusnosti metode tečne hromatografije za određivanje sadržaja natrijum-valproata

Neke primene teorije fazi skupova i fazi logike u procesiranju slika

Maja Antolović Algoritmi u teoriji brojeva

Jedna familija trokoračnih postupaka šestog reda za rešavanje nelinearnih jednačina

LLL Seminari u okviru TEMPUS projekta

NAPREDNI FIZIČKI PRAKTIKUM II studij Geofizika POLARIZACIJA SVJETLOSTI

Algoritmi za mnoºenje i dijeljenje velikih. brojeva. Marko Pejovi UNIVERZITET CRNE GORE. Prirodno-matemati ki fakultet Podgorica. Podgorica, 2018.

UNSTABILITY OF FOOD PRODUCTION PER CAPITA AND POPULATION: ASIA. Vesna Jablanović 1

Preliminarno ispitivanje sadrž aja slike pomoć u histograma slike koris ć enjem SVM algoritma i neuronske mrež e

THE CHANGE OF GENETIC AND PHENOTYPIC VARIABILITY OF YIELD COMPONENTS AFTER RECURRENT SELECTION OF MAIZE

SHOWER PARTICLE MULTIPLICITY DISTRIBUTIONS FOR COLLISIONS OF GEV/C PROTONS WITH EMULSION UDC S. Drndarević, G. Škoro, D.

U VOD U ALGOR IT ME I S T RUKT URE P ODATAK A

ALGORITMI PODIJELI PA VLADAJ

Uvod u algoritamske tehnike

BREEDING AND GENETIC PROPERTIES OF THE MAIZE VARIETY UZBEKSKA BELA

Transcription:

Matematički fakultet Univerzitet u Beogradu SEMINARSKI RAD IZ VEROVATNOĆE I STATISTIKE TEMA: Test za proveru znanja Student: Vladan Stanković 254/07 Profesor: Vesna Jevremović Asistent: Milan Jovanović Beograd 2011.

O Programu / Teorijska podloga Tok izvršavanja programa možemo podeliti na sledeće logičke celine: Generisanje vrednosti Unos podataka Obrada i prikaz rezultata Generisanje vrednosti Ono na šta posebno treba obratiti pažnju je samo generisanje podataka, tačnije sčučajnih brojeva. Obzirom da su kompjuteri deterministički uređaji, svaki pokušaj kreiranja generator slučajnih brojeva je teorijski nemoguć. Svaka situacija gde nam se traži slučajni broj predstavlja problem. Problem potrebe slučajnih brojeva rešavamo uvođenjem funkcija generatora pseudo-slučajnih brojeva, koji generišu nizove ovakvh brojeva. Iako se zna da se ovi brojevi posle izvesnog vremena ponavljaju, ovo nam ne predstavlja prevelik problem, obzirom da su periode njihovih ponavljanja poprilično velike, kod novijih generatora. Na primer, generator u jeziku PHP, u kome je najvećim delom i napisan ovaj program, perioda ponavljanja je 2 219937. Algoritam koji stoji iza ovog generatora se zove Mersenov tvister. Kako bi izbegli slučajno ponavljanje pitanja u kvizu, koje bi remetilo realnost ocene, brojeve ne generišemo nasumično. Brojevi su generisani kao niz od 1 do 20, koliko pitanja i imamo, a zatim ih "mešamo". Mešanje niza vrši funkcija shuffle() koja se oslanja na Mersenov tvister. Obzirom da u nizu imamo 20 pitanja, iz njega "odsecamo" poslednjih 10, kako bi smo ga sveli na 10 traženih nasumično odabranih pitanja. Nasumičnost mogućih odgovora za svako pitanje se postiže mešanjem odgovora u samom SQL upitu ključnim rečima ODRED BY RANDOM(). Iza funkcije RANDOM(), koja je ugrađena u MYSQL server na koji se program oslanja, takođe stoji Mersenov tvister. Nakon što je niz brojeva generisan, pretvaramo ga u String, i kao takav zapisujemo u COOKIE na računaru korisnika. Mersenov tvister Na osnovu metoda koji koriste, softveri za generisanje pseudoslučajnih brojeva se mogu podeliti na: Linearni kongruentni generator- linearni generator slučajnih brojeva Fibonačijevog generator- dobili su ime zbog sličnosti formule koju koriste sa formulom koja se koristi za dobijanje Fibonačijevog niza Generator linearno pomerajućeg registra - brojevi se ne dobijaju aritmetičkim već logičkim operacijama

Mersenov tvister je relativno nov algoritam za generisanje pseudoslučajnih brojeva, razvijen od strane Makota Matsumotoa i Takuji Nišimura 1997. koji se koristi kod većine modernih programskih jezika kao ugrađena rand() funkcija. On spada pod generatore linearno pomerajućeg registra Frobeniusove (racionalne) normalne forme. Karakterizuje ga: w dužina reči n nivo rekurzije m srednja reč 1 m n r mesto razdvajanja reči broj bitova u donjoj bitmasci 0 r w-1 a koeficijent Frobeniusove (racionalne) normalne forme matrice b,c bitmaske za algoritme ovog tipa s,t pomaci bitova u,l dodatni Mersen tvister pomaci bitova Pri čemu važi da je 2 nw-r -1 Mersenov prost broj. Ono što je najvažnije kod ovog algoritma da za reč dužine k generiše brojeve sa skoro uniformnom raspodelom u opsegu [0,(2 k 1)]. Implementacija algoritma: // Create a length 624 array to store the state of the generator int[0..623] MT int index = 0 // Initialize the generator from a seed function initializegenerator(int seed) { MT[0] := seed for i from 1 to 623 { // loop over each other element MT[i] := last 32 bits of(1812433253 * (MT[i-1] xor (right shift by 30 bits(mt[i-1]))) + i) // 0x6c078965 // Extract a tempered pseudorandom number based on the index-th value, // calling generatenumbers() every 624 numbers function extractnumber() { if index == 0 { generatenumbers() int y := MT[index] y := y xor (right shift by 11 bits(y)) y := y xor (left shift by 7 bits(y) and (2636928640)) // 0x9d2c5680 y := y xor (left shift by 15 bits(y) and (4022730752)) // 0xefc60000 y := y xor (right shift by 18 bits(y)) index := (index + 1) mod 624 return y // Generate an array of 624 untempered numbers function generatenumbers() { for i from 0 to 623 { int y := 32nd bit of(mt[i]) + last 31 bits of(mt[(i+1) mod 624]) MT[i] := MT[(i + 397) mod 624] xor (right shift by 1 bit(y)) if (y mod 2) == 1 { // y is odd MT[i] := MT[i] xor (2567483615) // 0x9908b0df

Unos podataka Sam unos podataka se vrši jednostavnim klikom na ispravan odgovor. Pitanja se korisniku postavljaju onim redom kojim su zapisana u kolaču na korisnikovom kompjuteru. Klikom na tačan odgovor se pokreće JavaScript koji zapisuje korisnikove odgovore u novi kolač, koji će kasnije php obraditi prilikom računanja ocene. Nakon toga se to pitanje izbacuje iz niza postavljenih pitanja, kako ga ne bi smo ponovo postavili. Obrada i prikaz podataka Nakon što je korisnik odgovorio na sva pitanja koja su mu postavljena, poziva se PHP skript koji iz kolača čita korisnikove odgovore, i poredi ih sa odgovorima koji su u bazi naznačeni kao tačni. Skripta korisniku ispisuje da li je odgovor tačan ili ne, i nudi mogućnost prikaza tačnog odgovora sa detaljnim objašnjenjem. Nakon obrada svih postavljenih pitanja, i dobijenih odgovora, korisniku se prikazuje i ocena koju je zaslužio, kao i mogućnost da pokrene novi test.

Najbitniji kodovi programa index.php Prilikom izvršavanja ove skripte se generišu sama pitanja, tačnije brojevi pitanja. Prvo generišemo niz brojeva od 1 do broja pitanja, a zatim ih mešamo. Nakon toga odbacujemo n-10 brojeva, gde je n ukupan broj pitanja, I ostavljamo 10 članova niza, koji predstavljaju 10 pitanja koja če biti postavljena kandidatu. Kod koji generiše brojeve I upisuje podatke u kolač: $brq = 23;//Predstavlja broj pitanja koja se uzimaju za ovaj test if(isset($_request['nova'])) { $numbers = range(1, $brq); shuffle($numbers); for($i=0;$i<($brq-10);$i++)//svodi niz na 10 pitanja array_pop($numbers); setcookie ("ps_sva", implode('.',$numbers), time() + 3600, "/"); setcookie ("ps_pitanja", implode('.',array_reverse($numbers)), time() + 3600, "/"); setcookie ("ps_odgovori", "", time() + 3600, "/"); if(!isset($_cookie['ps_pitanja'])) { $numbers = range(1, $brq); shuffle($numbers); for($i=0;$i<($brq-10);$i++) array_pop($numbers); setcookie ("ps_sva", implode('.',$numbers), time() + 3600, "/"); setcookie ("ps_pitanja", implode('.',array_reverse($numbers)), time() + 3600, "/"); setcookie ("ps_odgovori", "", time() + 3600, "/"); Nakon što je niz generisan, članove niza upisujemo u kolač(cookie), kako bi dalje skripte mogle da ih koriste.

test.php Vrši samo testiranje kandidata: $pitanja = explode(".", $_COOKIE['ps_pitanja']); $trenutno = array_pop($pitanja); if($trenutno!= "") { $username = 'pache'; $password = 'shkolarac'; $database = 'pachija_shkola'; $host = 'localhost'; mysql_connect($host, $username, $password); mysql_select_db($database); mysql_set_charset('utf8'); $r = mysql_query("select * FROM pitanja WHERE id_pitanja = $trenutno;"); while ($niz = mysql_fetch_array($r)) echo "<br /><br /><br />Pitanje: ".$niz['pitanje']."<br />"; $sql = "SELECT * FROM odgovori WHERE id_pitanja = $trenutno ORDER BY RAND();"; $r = mysql_query($sql); while ($niz = mysql_fetch_array($r)) { echo "<input type=\"radio\" name=\"odgovor\" onclick=\"odgovor({$niz['id_odgovora']);\" value=\"{$niz['id_odgovora']\" id=\"o{$niz['id_odgovora']\"/><label for=\"o{$niz['id_odgovora']\">".$niz['odgovor']."</label><br />"; mysql_close(); else {?> <script type="text/javascript"> window.location = "results.php"; </script> <?php

results.php Vrši obradu podataka, I prikaz rezultata: $pitanja = explode(".",$_cookie['ps_sva']); $odgovori = explode(".", $_COOKIE['ps_odgovori']); include('head.php');?> <div style="text-align:center; font-size:30px;"> <?php $username = 'pache'; $password = 'shkolarac'; $database = 'pachija_shkola'; $host = 'localhost'; $ocena = 0; mysql_connect($host, $username, $password); mysql_select_db($database); mysql_set_charset('utf8'); $r = mysql_query("select * FROM pitanja WHERE id_pitanja IN(".implode(",", $pitanja).");"); while ($niz = mysql_fetch_array($r)) { echo "Na pitanje:\"".$niz['pitanje']."\" ste odgovorili "; for($i=0;$i<2;$i++) if($pitanja[$i] == $niz['id_pitanja']) if($odgovori[$i+1] == $niz['tachno']) { echo "tačno! :)<br />"; $ocena++; else echo "netačno! :(<br />"; echo "<br /><a href=\"#\" onclick=\"tachan({$niz['id_pitanja'])\">tačan odgovor i obrazloženje</a><br /><br />";?> </div>

<?php if($ocena > 5) { echo "<script type=\"text/javascript\">$('#ocena').html('vaša ocena je: ".$ocena.". Položili ste!<br /><a style=\"color:#000;\" href=\"index.php?nova=1\">ponovo?</a>');$('#ocena').show();</script>"; else { echo "<script type=\"text/javascript\">$('#ocena').html('vaša ocena je: 5. Niste položili test, ali možete naučiti.<br /><a style=\"color:#000;\" href=\"index.php?nova=1\">ponovo?</a>');$ ('#ocena').show();</script>"; mysql_close(); include('foot.php'); Kao I test.php oslanja se na sledeći JavaScript iz main.js function odgovor(rid) { var odgovoris = new String($.cookies.get('ps_odgovori')); var odgovori = new Array(); odgovori = odgovoris.split("."); var o = odgovori.push(rid); odgovoris = odgovori.join("."); $.cookies.set('ps_odgovori', odgovoris); var pitanjas = new String($.cookies.get('ps_pitanja')); var pitanja = new Array(); pitanja = pitanjas.split("."); var p = pitanja.pop(); pitanjas = pitanja.join("."); $.cookies.set('ps_pitanja', pitanjas); if(pitanja.length!= 0) window.location.reload(); else window.location = "results.php";

function tachan(qid) { $.get("ajax.php", { p: qid, function(data) { $("#content").html(data); $("#ocena").hide(); ); A funkcija tachno(qid) iz skripta se poziva na ajax.php I vraća tačan odgovor sa opbjašnjenjem: <?php $username = 'pache'; $password = 'shkolarac'; $database = 'pachija_shkola'; $host = 'localhost'; mysql_connect($host, $username, $password); mysql_select_db($database); mysql_set_charset('utf8'); echo "<a href=\"results.php\"><- Povratak</a><br />"; $r = mysql_query("select * FROM odgovori o JOIN pitanja p ON o.id_odgovora = p.tachno WHERE p.id_pitanja = {$_REQUEST['p'];"); while ($niz = mysql_fetch_array($r)) echo "Tačan odgovor: <br /><br />".$niz['odgovor']."<br /><br /><br />"; $r = mysql_query("select * FROM opisi WHERE id_pitanja = {$_REQUEST['p'];"); while ($niz = mysql_fetch_array($r)) echo "Obrazloženje: <br /><br />".$niz['obrazlozenje']."<br />"; echo "<a href=\"results.php\"><- Povratak</a>"; mysql_close();?>