diff --git a/cviceni/class.cpp b/cviceni/class.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..58934cfd1fc91d17ea5913c543ec5c1f70d2aed5
--- /dev/null
+++ b/cviceni/class.cpp
@@ -0,0 +1,99 @@
+#include <iostream>
+#include <sstream>
+#include <ctime>
+
+#define LEN 20
+
+class MyRandom{
+    private:
+        int seed;
+        int state;
+        static int pocet_objektu;
+    public:
+        int rand();
+        static int getObjNum(){
+            return pocet_objektu;
+        }
+        //*konstruktor
+        MyRandom();
+        MyRandom(int seed);
+
+        //*destruktor
+            ///vsechno uvolni 
+        ~MyRandom(){
+            std::cerr<<"zavolan destruktor"<<std::endl;
+            pocet_objektu--;
+        };
+};
+
+int MyRandom::pocet_objektu=0;
+
+//*definice defaultniho konstruktoru 
+MyRandom::MyRandom(){
+    pocet_objektu++;
+    seed=time(NULL);
+    state=seed;
+    std::cerr<<"zavolan defautni konstruktor"<<std::endl;
+}
+
+//*parametrizovany konstruktor
+MyRandom::MyRandom(int seed){
+    pocet_objektu++;
+    seed=seed;
+    state=seed;
+    std::cerr<<"zavolam parametrizovany konstruktor"<<std::endl;
+}
+
+//*musim pridat namespace (MyRadom) abych se dostal ke clenske funkci 
+int MyRandom::rand(void){
+    state=(state * 1103515245 + 12345) & ((1U<<31)-1);
+    //*vracim hornich 16 bitu->15bit cislo 
+    return state>>16; //+0...32767
+
+}
+
+int main(int argc, char *argv[]){
+    int *parr=new int[LEN];
+    if(parr==NULL){
+        std::cerr << "alokace se nepovedla" <<std::endl;
+        return 1;
+    }
+
+    int seed=time(NULL);
+    if(argc>1){
+        std::istringstream iss(argv[1]);
+        iss>>seed;
+        //if(!iss.good())
+        if(!iss){
+            std::cerr<<"chyba argumentu"<<std::endl;
+            std::cerr<<"pouziti:" <<argv[0]<<" [seed]"<<std::endl;
+            delete[] parr;
+            return 2;
+        }
+    }
+
+    std::cerr<<"pocet instanci MyRandom:"<<MyRandom::getObjNum()<<std::endl;
+
+    MyRandom rnd;
+    std::cerr<<"pocet instanci MyRandom:"<<MyRandom::getObjNum()<<std::endl;
+
+    MyRandom rnd2(seed);
+    std::cerr<<"pocet instanci MyRandom:"<<MyRandom::getObjNum()<<std::endl;
+
+    MyRandom *prnd=new MyRandom(seed);
+    std::cerr<<"pocet instanci MyRandom:"<<MyRandom::getObjNum()<<std::endl;
+
+    for(int idx=0; idx<LEN; idx++){
+        //parr[idx]=rnd.rand() %30;
+        parr[idx]=rnd2.rand() %30;
+        //parr[idx]=rand() & (32-1);
+        std::cout<<parr[idx]<<", ";
+    }
+    std::cout<<std::endl;
+
+    delete prnd;
+    std::cerr<<"pocet instanci MyRandom:"<<MyRandom::getObjNum()<<std::endl;
+    
+    delete[] parr; //+uvolnime co jsme vzali 
+    return 0;
+}
\ No newline at end of file