POO : Test Partie C

POO : Test Partie C

En licence pro MI AW

Par Olivier Bailleux, Maître de conférences HDR, Université de bourgogne


On considère l’interface suivante :

public interface RandGen
{
    public void setMin(double min);
    public void setMax(double max);
    public double getMin();
    public double getMax();
    public String getLaw();
    public double draws();
}

Les classes qui implémentent cette interface ont vocation à produire des nombres aléatoires de type double compris entre deux valeurs pouvant être déterminées par les méthodes setMin et setMax et pouvant être consultées à l’aide des méthodes getMin et getMax. Ces classes doivent aussi disposer d’une méthode getLaws qui retourne une chaîne de caractères décrivant la loi de probabilité utilisée et d’une méthode draws dont le rôle est de produire une valeur aléatoire dans l’intervalle getMin() .. getMax().


La classe abstraite GenericRandGen implémente l’interface RandGen.

public abstract class GenericRandGen implements RandGen
{
    private double min;
    private double max;

    public GenericRandGen()
    {
        this.min = 0.0; this.max = 1.0;
    }

    public void setMin(double min) {this.min = min;}

    public void setMax(double max) {this.max = max;}

    public double getMin() {return this.min;}

    public double getMax() {return this.max;}

    public abstract String getLaw();

    public abstract double draws();

    public String toString()
    {
        return "Générator " + getLaw() + " in [" + min + "," + max + "]";
    }

    public double[] sample(int n)
    {
        // À compléter
    }
}

La méthode sample produit un tableau de longueur n rempli de valeurs alétoires produites par la méthode draws.

Q1 (1.5 point)

Complétez la méthode sample de la classeGenericRandGen.

public double[] sample(int n)
{
    // À compléter
}

Merci d’envoyer votre réponse à Olivier Bailleux via teams.

Q2 (1.5 points)

Complétez la classe UniformGen qui représente un générateur aléatoire permettant de produire des valeurs selon une loi de probabilité uniforme. Ces valeurs peuvent être obtenues à partir de la méthode Math.random() qui produit une valeur comprise entre 0.0 et 1.0 selon une loi uniforme.

public class UniformGen extends GenericRandGen
{
    // À compléter
}

Merci d’envoyer votre réponse à Olivier Bailleux via teams.

Q3 (2 points)

Réalisez une méthode main, situé dans une classe Main, qui :

  • Crée un générateur de type UniformGen.
  • Initialise à 1.0 et 3.0 les bornes minimum et maximum de l’intervalle des valeurs pouvant être produites par ce générateur.
  • Utilise la méthode sample pour produire une tableau de 10 nombres aléatoires.
  • Affiche à l’écran les valeurs récupérées dans ce tableau.
public class Main
{
    public static void main(String[] args)
    {
        // À compléter
    }
}

Merci d’envoyer votre réponse à Olivier Bailleux via teams.