rendered paste bodyimport java.math.BigDecimal;import java.util.Random;public final class Tp1 { public static void main(String[] args) { question1a(); question2a(); question2b(); question3a(); question3b(); } private static BigDecimal fact(int n) { BigDecimal fact = BigDecimal.ONE; for (int i = 1; i <= n; i++) { fact = fact.multiply(BigDecimal.valueOf(i)); } return fact; } private static BigDecimal choisir(int r, int n) { return fact(n).divide((fact(r).multiply(fact(n - r)))); } //========================================================================== // Début Question 1a //========================================================================== private static void question1a() { double p = 1.; for (double n = 364; n > 365-30; n--) { p *= n / 365.; } System.out.format("1a: %.1f\n", (1-p) * 100); } //========================================================================== // Début Question 2 //========================================================================== private static final class ResultatQ2 { public ResultatQ2(char meneur, int changements, int affiles) { this.meneur = meneur; this.changements = changements; this.affiles = affiles; } public char meneur; public int changements; public int affiles; } //========================================================================== // Début Question 2a //========================================================================== private static void question2a() { ResultatQ2 res = question2_test(); System.out.format("2a: Meneur = %c, Changements = %d, Affilés = %d\n", res.meneur, res.changements, res.affiles); } private static ResultatQ2 question2_test() { char meneur = '\0'; int affiles = 0, changements = 0, nbP = 0, nbF = 0; Random gen = new Random(); for (int i = 0; i < 1000; i++) { // incrémentation des nombres if (gen.nextInt(2) == 0) nbP++; else nbF++; // detection d'un changement if (i == 0) { meneur = nbP > nbF ? 'P' : 'F'; } else { if (meneur == 'P' && nbF >= nbP) { changements++; meneur = 'F'; } else if (meneur == 'F' && nbP >= nbF) { changements++; meneur = 'P'; } else if (nbP == nbF) { affiles = 0; meneur = '\0'; } else { affiles++; } } } return new ResultatQ2(meneur, changements, affiles); } //========================================================================== // Début Question 2b //========================================================================== private static void question2b() { double x = 0; for (int i = 0; i < 20; i++) { x += question2_test().affiles; } System.out.format("2b: Moyenne = %.2f\n", x / 20); } //========================================================================== // Début Question 3a //========================================================================== private static final void question3a() { for (int i = 1; i <= 100; i++) { System.out.println("3a: " + question3a_cat(i)); } } private static BigDecimal question3a_cat(int n) { return BigDecimal.valueOf(1. / ((double) n + 1.)).multiply(choisir(n, 2 * n)); } //========================================================================== // Début Question 3b //========================================================================== private static void question3b() { for (int i = 1; i <= 100; i++) { System.out.println("3b: " + question3b_cat(i)); } } private static BigDecimal question3b_cat(int n) { return BigDecimal.valueOf((4. * n - 2) / ((double) n + 1.)).multiply(question3a_cat(n - 1)); } //========================================================================== // Début Question 3c //========================================================================== private static void question3c() { for (int i = 1; i <= 5; i++) { System.out.println(question3c_cat(i)); } } private static BigDecimal question3c_cat(int n) { BigDecimal cat = BigDecimal.ONE; return cat; } }