Jedenasta prezentacja do kursu „Wstęp do programowania”.
Treść:
- Matematyka i statystyka – liczby pseudolosowe, wybrane biblioteki dostarczające metody służące obliczeniom matematycznym i statystycznym
- Obsługa wyjątków
- Zapis i odczyt plików tekstowych
Ta strona jest częścią starego kursu Javy. Nowy kurs, pt. “Programowanie w Javie z elementami bioinformatyki dla poczatkujących”, jest znacznie rozszerzony i dostosowany fo Javy 8. Jego forma jest także znacznie bardziej przystępna dla korzystających wyłącznie z treści on-line. Dostępne materiały znajdziesz tutaj.
Żródła
Liczby pseudolosowe
Różne sposoby generowania liczb pseudolosowych
import java.util.Random; public class Przypadek { public static void main(String[] args) { Random randomGenerator = new Random(); // prawda lub fałsz System.out.println("boolean: "+randomGenerator.nextBoolean()); // liczba całkowita z zakresu int System.out.println("int: "+randomGenerator.nextInt()); // liczba całkowita z zakresu 0-10 (do liczby w nawiasie -1) System.out.println("int [0-19]: "+randomGenerator.nextInt(11)); // liczba całkowita z zakresu long System.out.println("long: "+randomGenerator.nextLong()); // ułamek float z zakresu 0-1 (bez 1) System.out.println("float: "+randomGenerator.nextFloat()); // ułamek double z zakresu 0-1 (bez 1) System.out.println("double: "+randomGenerator.nextDouble()); // ułamek double z zakresu 0-1 (bez 1) System.out.println("Math.random(): "+Math.random()); } }
Math
Wybrane metody klasy Math
public class Matematyka { public static void main(String[] args) { System.out.println("Zaokrąglenie (round): "+Math.round(3.49)); System.out.println("Zaokrąglenie (rint) "+Math.rint(3.49)); System.out.println("Zaokrąglenie w dół: "+Math.floor(3.49)); System.out.println("Zaokrąglenie w górę: "+Math.ceil(3.49)); System.out.println("Liczba mniejsza: "+Math.min(3.49, 3.51)); System.out.println("Liczba większa: "+Math.min(3.49, 3.51)); System.out.println("Wartość absolutna: "+Math.abs(-3.49)); System.out.println("Potęga: "+Math.pow(2.0, 3.0)); System.out.println("Pierwiastek kwadratowy: "+Math.sqrt(9.0)); System.out.println("Pi: "+Math.PI); System.out.println("e: "+Math.E); } }
Statystyka
Wybrane metody statystyczne dostępne w pakiecie org.apache.commons.math
import org.apache.commons.math3.stat.StatUtils; import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics; import org.apache.commons.math3.stat.inference.TestUtils; public class Statystyka { public static void main(String[] args) { DescriptiveStatistics stats = new DescriptiveStatistics(); for (int i = 0; i < 100; i++) { stats.addValue(Math.random()); } System.out.println(" *** Stosujemy DescriptiveStatistics() ***"); System.out.println("Średnia: "+stats.getMean()); System.out.println("W. najwięsza: "+stats.getMax()); System.out.println("W. najmniejsza: "+stats.getMin()); System.out.println("Odch. standardowe: "+stats.getStandardDeviation()); System.out.println("Suma: "+stats.getSum()); System.out.println("Wariancja: "+stats.getVariance()); System.out.println(" *** StatUtils ***"); double[] dane = {2.0, 4.0, 5.0, 4.0, 3.0, 3.5, 5.5}; System.out.println("Średnia: "+StatUtils.mean(dane)); System.out.println("W. najwięsza: "+StatUtils.max(dane)); System.out.println("W. najmniejsza: "+StatUtils.min(dane)); System.out.println("Suma kwadratów: "+StatUtils.sumSq(dane)); System.out.println(" *** TestUtils ***"); double[] dane1 = {2.0, 4.0, 5.0, 4.0, 3.0, 3.5, 5.5}; double[] dane2 = {2.0, 6.0, 5.0, 6.0, 3.0, 6.5, 5.5}; long[] obserwowane = {30,20}; double[] spodziewane = {37.5, 12.5}; try { System.out.println("t-test dwie próbki: "+ TestUtils.pairedTTest(dane1, dane2)); System.out.println("t-test dwie próbki (+p): "+ TestUtils.pairedTTest(dane1, dane2, 0.05)); System.out.println("Chi-kwadrat: "+ TestUtils.chiSquare(spodziewane, obserwowane)); System.out.println("Chi-kwadrat (p): "+ TestUtils.chiSquareTest(spodziewane, obserwowane)); } catch (IllegalArgumentException e) { e.printStackTrace(); } } }
Hazardzista
Symulacja zachowania hazardzisty (patrz prezentacja)
import java.util.Random; public class Hazardzista { public static void main(String[] args) { int poziomZasobow = 100; int cel = 1000; int liczbaGier = 100; double wygrane = 0; double procentWygranych = 0; for (int i = 0; i < liczbaGier; i++) { int zasoby = poziomZasobow; while (zasoby > 0 &amp;&amp; zasoby < cel) { double wynik = Math.random(); if (wynik < 0.5) zasoby--; else zasoby++; } if (zasoby == cel) wygrane++; } procentWygranych = (wygrane / liczbaGier) * 100; System.out.println("Wygranych: " + procentWygranych + "%"); } }
Pliki
Prosty zapis i odczyt pliku tekstowego.
import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Scanner; public class Pliki { public static void main(String[] args) { String plik = "dane.txt"; // Zapis w pliku PrintWriter out; try { out = new PrintWriter(plik); out.println("Raz"); out.println("Dwa"); out.println("Trzy"); out.close(); } catch (FileNotFoundException e) { System.out.println("Brak Pliku!"); e.printStackTrace(); } // Odczyt pliku File plikDane = new File(plik); Scanner skaner; ArrayList<String> dane = new ArrayList<String>(); int suma =0; try { skaner = new Scanner(plikDane); while (skaner.hasNextLine()) { dane.add(skaner.nextLine()); } } catch (FileNotFoundException e) { System.out.println("Brak Pliku do odczytania!"); e.printStackTrace(); } System.out.println("Odczytane dane: "+dane); System.out.println("Odczytane dane po kolei: "); for (String d : dane) System.out.println(d); } }
Leave a Reply
You must be logged in to post a comment.