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);
}
}
@grzegg
Leave a Reply
You must be logged in to post a comment.