lotto do 49 z czasem liczba losowań i wartością oczekiwaną
import java.util.Scanner;
import java.security.SecureRandom;
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
SecureRandom random = new SecureRandom();
DecimalFormat df = new DecimalFormat("#.##");
DecimalFormat df6 = new DecimalFormat("#.##########");
System.out.println("ile razy chcesz by komputer trafił twoją szostke");
int liczbalosowan = scanner.nextInt();
while (liczbalosowan < 1) {
System.out.println("podales błędną wartosc, wpisz ponownie poprawną wartość");
liczbalosowan = scanner.nextInt();
}
System.out.println("podaj pierwsza liczbe z zakresu 1 - 49 wlacznie");
int l1 = scanner.nextInt();
if (l1 < 1 || l1 > 49) {
while (l1 < 1 || l1 > 49) {
System.out.println("podales bledna wartosc sproboj ponownie podac wartosc pierwszej liczby mieszczacej sie w przedziale 1 do 49 wlacznie");
l1 = scanner.nextInt();
}
}
System.out.println("podaj druga liczbe z zakresu 1 - 49 wlacznie");
int l2 = scanner.nextInt();
if (l2 < 1 || l2 > 49 || l2 == l1) {
while (l2 < 1 || l2 > 49 || l2 == l1) {
System.out.println("podales bledna wartosc sproboj ponownie podac wartosc drugiej liczby mieszczacej sie w przedziale 1 do 49 wlacznie i inna niz pierwsza liczba");
l2 = scanner.nextInt();
}
}
System.out.println("podaj trzecia liczbe z zakresu 1 - 49 wlacznie");
int l3 = scanner.nextInt();
if (l3 < 1 || l3 > 49 || l3 == l1 || l3 == l2) {
while (l3 < 1 || l3 > 49 || l3 == l1 || l3 == l2) {
System.out.println("podales bledna wartosc sproboj ponownie podac wartosc trzeciej liczby mieszczacej sie w przedziale 1 do 49 wlacznie i inna niz wczesniejsze liczby");
l3 = scanner.nextInt();
}
}
System.out.println("podaj czwarta liczbe z zakresu 1 - 49 wlacznie");
int l4 = scanner.nextInt();
if (l4 < 1 || l4 > 49 || l4 == l1 || l4 == l2 || l4 == l3) {
while (l4 < 1 || l4 > 49 || l4 == l1 || l4 == l2 || l4 == l3) {
System.out.println("podales bledna wartosc sproboj ponownie podac wartosc czwartej liczby mieszczacej sie w przedziale 1 do 49 wlacznie i inna niz wczesniejsze liczby");
l4 = scanner.nextInt();
}
}
System.out.println("podaj piata liczbe z zakresu 1 - 49 wlacznie");
int l5 = scanner.nextInt();
if (l5 < 1 || l5 > 49 || l5 == l1 || l5 == l2 || l5 == l3 || l5 == l4) {
while (l5 < 1 || l5 > 49 || l5 == l1 || l5 == l2 || l5== l3 || l5 == l4) {
System.out.println("podales bledna wartosc sproboj ponownie podac wartosc piatej liczby mieszczacej sie w przedziale 1 do 49 wlacznie i inna niz wczesniejsze liczby");
l5 = scanner.nextInt();
}
}
System.out.println("podaj szosta liczbe z zakresu 1 - 49 wlacznie");
int l6 = scanner.nextInt();
if (l6 < 1 || l6 > 49 || l6 == l1 || l6 == l2 || l6 == l3 || l6 == l4 || l6 == l5) {
while (l6 < 1 || l6 > 49 || l6 == l1 || l6 == l2 || l6== l3 || l6 == l4 || l6 == l5) {
System.out.println("podales bledna wartosc sproboj ponownie podac wartosc szostej liczby mieszczacej sie w przedziale 1 do 49 wlacznie i inna niz wczesniejsze liczby");
l6 = scanner.nextInt();
}
}
int r1 = random.nextInt(49) + 1;
int r2 = 0;
int r3 = 0;
int r4 = 0;
int r5 = 0;
int r6 = 0;
int numerPetli = 0;
int trafione5 = 0;
int trafione4 = 0;
int trafione3 = 0;
int trafione2 = 0;
int trafione1 = 0;
int trafione0 = 0;
int trafione5w = 0;
int trafione4w = 0;
int trafione3w = 0;
int trafione2w = 0;
int trafione1w = 0;
int trafione0w = 0;
int probyRazemW = 0;
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;
int g = 0;
long startTime= System.currentTimeMillis(); // zapisz czas rozpoczęcia programu
for (int i = 0; i < liczbalosowan; i++) {
System.out.println("losowanie " + (i + 1));
numerPetli = 0;
long koniecczasu = System.currentTimeMillis();
while (true) {
numerPetli++;
// if (numerPetli == 700) {
//break;
//}
int trafione = 0;
r1 = random.nextInt(49) + 1;
if (r1 == l1 || r1 == l2 || r1 == l3 || r1 == l4 || r1 == l5 || r1 == l6) {
trafione++;
}
r2 = random.nextInt(49) + 1;
if (r2 == r1) {
while (r2 == r1){
r2 = random.nextInt(49) + 1;
}
}
if (r2 == l1 || r2 == l2 || r2 == l3 || r2 == l4 || r2 == l5 || r2 == l6) {
trafione++;
}
r3 = random.nextInt(49) + 1;
if (r3 == r1 || r3 == r2) {
while (r3 == r1 || r3 == r2) {
r3 = random.nextInt(49) + 1;
}
}
if (r3 == l1 || r3 == l2 || r3 == l3 || r3 == l4 || r3 == l5 || r3 == l6) {
trafione++;
}
r4 = random.nextInt(49) + 1;
if (r4 == r1 || r4 == r2 || r4 == r3){
while (r4 == r1 || r4 == r2 || r4 == r3) {
r4 = random.nextInt(49) + 1;
}
}
if (r4 == l1 || r4 == l2 || r4 == l3 || r4 == l4 || r4 == l5 || r4 == l6) {
trafione++;
}
r5 = random.nextInt(49) + 1;
if (r5 == r1 || r5 == r2 || r5 == r3 || r5 == r4) {
while (r5 == r1 || r5 == r2 || r5 == r3 || r5 == r4) {
r5 = random.nextInt(49) + 1;
}
}
if (r5 == l1 || r5 == l2 || r5 == l3 || r5 == l4 || r5 == l5 || r5 == l6) {
trafione++;
}
r6 = random.nextInt(49) + 1;
if (r6 == r1 || r6 == r2 || r6 == r3 || r6 == r4 || r6 == r5) {
while (r6 == r1 || r6 == r2 || r6 == r3 || r6 == r4 || r6 == r5) {
r6 = random.nextInt(49) + 1;
}
}
if (r6 == l1 || r6 == l2 || r6 == l3 || r6 == l4 || r6 == l5 || r6 == l6) {
trafione++;
}
if (trafione == 5) {
trafione5++;
} else if (trafione == 4) {
trafione4++;
} else if (trafione == 3) {
trafione3++;
} else if (trafione == 2 ) {
trafione2++;
} else if (trafione == 1) {
trafione1++;
} else {
trafione0++;
}
// System.out.println(numerPetli + " wylosowane liczby to " + r1 + "; " + r2 + "; " + r3 + "; " + r4 + "; " + r5 + "; " + r6);
if (numerPetli == 1) {
a = trafione;
b = r1;
c = r2;
d = r3;
e = r4;
f = r5;
g = r6;
}
if ((l1 == r1 || l2 == r1 || l3 == r1 || l4 == r1 || l5 == r1 || l6 == r1) && (l1 == r2 || l2 == r2 || l3 == r2 || l4 == r2 || l5 == r2 || l6 == r2) && (l1 == r3 || l2 == r3 || l3 == r3 || l4 == r3 || l5 == r3 || l6 == r3) && (l1 == r4 || l2 == r4 || l3 == r4 || l4 == r4 || l5 == r4 || l6 == r4) && (l1 == r5 || l2 == r5 || l3 == r5 || l4 == r5 || l5 == r5 || l6 == r5) && (l1 == r6 || l2 == r6 || l3 == r6 || l4 == r6 || l5 == r6 || l6 == r6)) {
System.out.println("trafiono Twoje liczby za " + numerPetli + " razem");
break;
}
}
int probyRazem = trafione5 + trafione4 + trafione3 + trafione2 + trafione1 + trafione0;
double t5 = trafione5;
double t4 = trafione4;
double t3 = trafione3;
double t2 = trafione2;
double t1 = trafione1;
double t0 = trafione0;
trafione5w += trafione5;
trafione4w += trafione4;
trafione3w += trafione3;
trafione2w += trafione2;
trafione1w += trafione1;
trafione0w += trafione0;
probyRazemW += probyRazem;
double tp5 = ((1.0) * trafione5 / probyRazem) * 100;
double tp4 = ((1.0) * trafione4 / probyRazem) * 100;
double tp3 = ((1.0) * trafione3 / probyRazem) * 100;
double tp2 = ((1.0) * trafione2 / probyRazem) * 100;
double tp1 = ((1.0) * trafione1 / probyRazem) * 100;
double tp0 = ((1.0) * trafione0 / probyRazem) * 100;
System.out.println("trafione 5 : " + trafione5 + " " + df.format(tp5) + " %");
System.out.println("trafione 4 : " + trafione4 + " " + df.format(tp4) + " %");
System.out.println("trafione 3 : " + trafione3 + " " + df.format(tp3) + " %");
System.out.println("trafione 2 : " + trafione2 + " " + df.format(tp2) + " %");
System.out.println("trafione 1 : " + trafione1 + " " + df.format(tp1) + " %");
System.out.println("nietrafiono nic w " + trafione0 + " probach" + " " + df.format(tp0) + " %");
System.out.println("prob razem bylo " + probyRazem);
System.out.println("w pierwszej probie trafiono " + a + " liczb, a liczbami tymi byly liczby: ");
System.out.println(b + " " + c + " " + d + " " + e + " " + f + " " + g);
System.out.println(l1 + " " + l2 + " " + l3 + " " + l4 + " " + l5 + " " + l6 + " byly Twoimi liczbami");
System.out.println();
if (i>0) {
System.out.println("czas losowania " + (i +1) + " to: " + (koniecczasu - startTime));
}
}
double tp5w = ((1.0) * trafione5w / probyRazemW) * 100;
double tp4w = ((1.0) * trafione4 / probyRazemW) * 100;
double tp3w = ((1.0) * trafione3 / probyRazemW) * 100;
double tp2w = ((1.0) * trafione2 / probyRazemW) * 100;
double tp1w = ((1.0) * trafione1 / probyRazemW) * 100;
double tp0w = ((1.0) * trafione0 / probyRazemW) * 100;
double tp6w = ((1.0) * liczbalosowan / probyRazemW);
System.out.println();
System.out.println("oto podsmuowanie wszystkich (" + liczbalosowan + ") prob:");
System.out.println("trafione 5 : " + trafione5w + " " + df.format(tp5w) + " %");
System.out.p
rintln("trafione 4 : " + trafione4w + " " + df.format(tp4w) + " %");
System.out.println("trafione 3 : " + trafione3w + " " + df.format(tp3w) + " %");
System.out.println("trafione 2 : " + trafione2w + " " + df.format(tp2w) + " %");
System.out.println("trafione 1 : " + trafione1w + " " + df.format(tp1w) + " %");
System.out.println("nietrafiono nic w " + trafione0w + " probach" + " " + df.format(tp0w) + " %");
System.out.println("prob razem bylo " + probyRazemW);
System.out.println("szóstek trafiono " + liczbalosowan + " co daje " + df6.format(tp6w)+ " %");
System.out.println();
System.out.println("Oto wartość oczekiwana dla jednego losu ma podstawie wszystkich losowań:");
double wartoscoczekiwana6 = (1.0 * liczbalosowan * 2000000) / probyRazemW;
double wartoscoczekiwana5 = (1.0 * trafione5w * 5000) / probyRazemW;
double wartoscoczekiwana4 = (1.0 * trafione4w * 200) / probyRazemW;
double wartoscoczekiwana3 = (1.0 * trafione3w * 24) / probyRazemW;
double wartoscOczekiwana = wartoscoczekiwana6 + wartoscoczekiwana5 + wartoscoczekiwana4 + wartoscoczekiwana3 - (probyRazemW * 3);
System.out.println(wartoscOczekiwana);
long endTime = System.currentTimeMillis();
long duration = endTime - startTime;
System.out.println("czas trwania losowania i podliczania to " + duration + " milisekund");
}
}
Komentarze
Prześlij komentarz