Advertisement
Guest User

generator Danych

a guest
Jan 17th, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.46 KB | None | 0 0
  1. package lukas.generator;
  2.  
  3. import java.io.FileNotFoundException;
  4. import java.io.PrintWriter;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import java.util.Random;
  8.  
  9. public class Main {
  10.     static final Random r = new Random();
  11.     static final int ILOSC_DANYCH = 1000;
  12.     static final String FILE_NAME = "out.csv";
  13.    
  14.     public static void main(String[] args) throws FileNotFoundException {
  15.         List<Wiersz> wiersze = new ArrayList<Wiersz>();
  16.        
  17.         for(int i=0;i<ILOSC_DANYCH;i++){
  18.             wiersze.add(generateRow());
  19.         }
  20.        
  21.         System.out.println("KONIEC GENEROWANIA!");
  22.         System.out.println("Ilość błędów: "+Wiersz.iloscBledow());
  23.        
  24.         PrintWriter zapis = new PrintWriter(FILE_NAME);
  25.        
  26.         zapis.println(Wiersz.getCSVheader());
  27.        
  28.         for(int i=0;i<ILOSC_DANYCH;i++){
  29.             zapis.println(wiersze.get(i).getCSV());
  30.         }
  31.        
  32.         zapis.close();
  33.     }
  34.    
  35.     public static Wiersz generateRow(){
  36.         Wiersz w;// = new Wiersz();
  37.        
  38.         boolean isMiasto;
  39.        
  40.         do{
  41.             w = new Wiersz();
  42.            
  43.             w.wiek = 18+r.nextInt(57);
  44.             w.plec = (r.nextBoolean())? 'M' : 'K';
  45.            
  46.             isMiasto = r.nextBoolean();
  47.             w.miejsce_zam = (isMiasto)? "Miasto" : "Wies";
  48.            
  49.             if(isMiasto){
  50.                 if(r.nextBoolean()){//zrobmy duze miasto:
  51.                     w.liczba_ludnosci = 100000+r.nextInt(500000);
  52.                 } else {
  53.                     w.liczba_ludnosci = 2000 + r.nextInt(100000);
  54.                 }
  55.             } else {
  56.                 w.liczba_ludnosci = r.nextInt(8000);
  57.             }
  58.            
  59.             w.czas_istnienia = r.nextInt(600);
  60.             if(w.czas_istnienia>300){
  61.                 w.liczba_zatr = 40 + r.nextInt(140);
  62.             } else {
  63.                 w.liczba_zatr = r.nextInt(80);
  64.             }
  65.            
  66.             w.czas_pracy = r.nextInt(360);
  67.            
  68.             double wynagrodzenie = r.nextDouble() * r.nextInt(20000);
  69.             if(wynagrodzenie > 14000) wynagrodzenie /= 2;
  70.            
  71.             if(isMiasto) {
  72.                 wynagrodzenie += r.nextDouble() * r.nextInt(1500);
  73.                 if(wynagrodzenie < 2500) wynagrodzenie *= 1.5;
  74.             }
  75.            
  76.            
  77.             if(w.czas_pracy > 100 && w.czas_pracy < 200) {
  78.                 wynagrodzenie *= 1.1;
  79.             }
  80.            
  81.             if(w.czas_pracy >= 200) {
  82.                 if(wynagrodzenie<5000){
  83.                     if(isMiasto) wynagrodzenie *= 1.5;
  84.                     else wynagrodzenie *= 1.4;
  85.                 } else {
  86.                     wynagrodzenie *= 1.2;
  87.                 }
  88.             }
  89.            
  90.             w.wynagrodzenie = wynagrodzenie;
  91.            
  92.         } while(!w.check());
  93.    
  94.         return w;
  95.     }
  96.  
  97. }
  98.  
  99.  
  100.  
  101. package lukas.generator;
  102.  
  103. import java.text.DecimalFormat;
  104.  
  105. public class Wiersz {
  106.     private static int bledow = 0;
  107.    
  108.     public int wiek; //18-75
  109.     public char plec; //M / K
  110.     public String miejsce_zam; //Miasto / Wieś
  111.     public int liczba_ludnosci; //liczba ludnosci w miejscu zamieszkania: 50-1 000 000
  112.     public int liczba_zatr; //liczba zatr w miejscu pracy: 1 - 200
  113.     public int czas_pracy; //czas pracy w miesiacach (0-360) [max 30 lat]
  114.     public int czas_istnienia; // czas istnienia firmy w miesiacach (0-600) [max 50 lat]
  115.     public double wynagrodzenie; //1000 - 15000 zł (lub -1 dla pomieniecia)
  116.    
  117.     public Wiersz(int wiek, char plec, String miejsce_zam, int liczba_ludnosci, int liczba_zatr, int czas_pracy, int czas_istnienia,
  118.             double wynagrodzenie) {
  119.         super();
  120.         this.wiek = wiek;
  121.         this.plec = plec;
  122.         this.miejsce_zam = miejsce_zam;
  123.         this.liczba_ludnosci = liczba_ludnosci;
  124.         this.liczba_zatr = liczba_zatr;
  125.         this.czas_pracy = czas_pracy;
  126.         this.czas_istnienia = czas_istnienia;
  127.         this.wynagrodzenie = wynagrodzenie;
  128.     }
  129.    
  130.     public Wiersz(){
  131.         super();
  132.     }
  133.    
  134.     public static int iloscBledow(){
  135.         return bledow;
  136.     }
  137.    
  138.     public boolean check(){
  139.         boolean ret = true;
  140.        
  141.         if(wiek<18 || wiek>75) ret = false;
  142.        
  143.         if(plec!='M' && plec!='K') ret = false;
  144.        
  145.         if(!miejsce_zam.equals("Miasto") && !miejsce_zam.equals("Wies")) ret = false;
  146.        
  147.         if(liczba_ludnosci<50 || liczba_ludnosci>1000000) ret = false;
  148.        
  149.         if(liczba_zatr<1 || liczba_zatr>200) ret = false;
  150.        
  151.         if(czas_pracy < 0 || czas_pracy > 360) ret = false;
  152.        
  153.         if(czas_istnienia < 0 || czas_istnienia > 600) ret = false;
  154.        
  155.         if(wynagrodzenie != -1) {//jesli nie pomijamy
  156.             if(wynagrodzenie < 1000 || wynagrodzenie > 15000) ret = false;
  157.         }
  158.        
  159.         if(ret==false) bledow++;
  160.        
  161.         return ret;
  162.     }
  163.    
  164.     public String getCSV(){
  165.         String s = "";
  166.        
  167.         s += wiek + ";" + plec + ";" + miejsce_zam + ";" + liczba_ludnosci + ";" + liczba_zatr + ";";
  168.         s += czas_pracy + ";" + czas_istnienia + ";";
  169.        
  170.         DecimalFormat df = new DecimalFormat("0.00");
  171.         s += df.format(wynagrodzenie);
  172.        
  173.         return s;
  174.     }
  175.    
  176.     public static String getCSVheader(){
  177.         String s = "Wiek;Plec;Miejsce_zamieszkania;Liczba_ludnosci;Liczba_zatrudnionych;Czas_pracy;Czas_istnienia;Wynagrodzenie";
  178.         return s;
  179.     }
  180.    
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement