IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Statistiques très basiques


Sujet :

Langage Java

  1. #1
    Membre averti
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Points : 341
    Points
    341
    Par défaut Statistiques très basiques
    Bonjour,

    Soit un tableau de double :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		double[] array = { 10.1, 34.0, 15.0, 22.5, 24.2, 31.0, 32.0, 37.0 };
    Soient les intervalles ( au sens statistiques ) suivant :
    Intervalle A :
    Les éléments dont la valeur est < 10
    Intervalle B :
    Les éléments dont la valeur est >= 10 et < 20
    Intervalle C :
    Les éléments dont la valeur est >= 20 et < 30
    Intervalle D :
    Les éléments dont la valeur est >= 30


    Existe-t-il une API déjà développée pour ce genre de problème ?


    Merci,

  2. #2
    Membre averti Avatar de Tux++
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    281
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 281
    Points : 379
    Points
    379
    Par défaut
    bonjour,

    pourquoi une API est-elle nécéssaire?

    un switch/case ou des if/else feront l'affaire non?
    Certified Oracle Advanced PL/SQL Professional
    Certified Oracle APEX Expert
    Certified Oracle SQL Expert

  3. #3
    Membre averti
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Points : 341
    Points
    341
    Par défaut
    Citation Envoyé par Tux++ Voir le message
    bonjour,

    pourquoi une API est-elle nécéssaire?

    un switch/case ou des if/else feront l'affaire non?
    un switch/case avec des doubles, ce n'est peut-être pas si évident.

    Le code d'une API sera sans doute plus robuste que mon code, et viendra avec d'autres fonctions qui peuvent également m'être utile.

  4. #4
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    interface Constraint {
       boolean isSatisfied(double d);
     
       String getName();
    }
     
    class ConstraintLess10 implements Constraint {
       public boolean isSatisfied(double d) {
          return d < 10;
       }
     
       public String getName() {
          return "< 10";
       }
    }
     
    class ConstraintBetween10And20 implements Constraint {
       public boolean isSatisfied(double d) {
          return d >= 10 && d < 20;
       }
     
       public String getName() {
          return ">= 10 et < 20";
       }
    }
     
    // autres contraintes
    ...
     
    // qq part
    public Map partition(double[] array, List constraints) {
       Map map = new HashMap();
     
       for (int i = 0; i < array.length; i++) {
          double d = array[i];
          select(d, constraints, map);
       }
       return map;
    }
     
    private void select(double d, List constraints, Map map) {
       for (Iterator it = constraints.iterator(); it.hasNext();) {
          Constraint constraint = (Constraint) it.next();
          if (constraint.isSatisfied(d)) {
             List doubles = (List) map.get(constraint);
             if (doubles == null) {
                doubles = new ArrayList();
                map.put(constraint, doubles);
             }
             doubles.add(new Double(d));
          }
       }
    }
     
    public void print(Map map, PrintStream out) {
       for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
          Entry entry = (Entry) map.next();
          Constraint constraint = (Constraint) entry.getKey();
          List doubles = (List) entry.getValue() ;
     
          StringBuffer sb = new StringBuffer();
          for (Iterator it2 = doubles.iterator(); it.hasNext();) {
             sb.append(it2.next()).append(" ");
          }
     
          out.println("contrainte " + constraint.getName() + " satisfaite pour " + sb);
       }
    }
     
    Map map = partition(new double[] {
                            10.1, 34.0, 15.0, 22.5, 24.2, 31.0, 32.0, 37.0 },
                        Arrays.asList(new Constraint[] {
                                          new ConstraintLess10(),
                                          new ConstraintBetween10And20(),
                                          ...}));

  5. #5
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Dans Commons Lang, il y a la classe DoubleRange, qui manipule ce qu'elle dit qu'elle manipule. Mais j'ai jamais utilisé.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  6. #6
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Commons math devrait gérer le truc (voir percentile de la classe StatUtils).

  7. #7
    Membre averti
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Points : 341
    Points
    341
    Par défaut
    J'utilise une partie de la bibliothèque org.apache.commons.math;
    La class Frequency.
    Je ne sais pas si je l'utilise correctement, mais je pense avoir résolu mon problème pour le moment.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    import org.apache.commons.math.stat.Frequency;
     
    public class TestStats001 {
     
    	/**
             * @param args
             */
     
    	public static void main(String[] args) {
    		Frequency frequency = new Frequency();
    		double[] population = { 10.1, 34.0, 10.0, 22.5, 24.2, 1.0, 32.0, 37.0 };
    		double[] caracteres = { 10.0, 20.0, 30.0 };
    		boolean find;
     
    		for (double p : population) {
    			int i;
    			find = false;
    			for (i = 0; i < caracteres.length; i++) {
    				if (p < caracteres[i]) {
    					frequency.addValue(i);
    					find = true;
    					break;
    				}
    			}
    			if (find == false) {
    				frequency.addValue(i);
    			}
    		}
     
    		for (int i = 0; i < caracteres.length + 1; i++) {
    			System.out
    			.println("Caractère " + i + " : " + frequency.getCount(i));
    		}
    		for (int i = 0; i < caracteres.length + 1; i++) {
    			System.out
    			.println("Pourcentage " + i + " : " + frequency.getPct(i));
    		}
    	}
    }

Discussions similaires

  1. langage de programmation très basique (purement logique).
    Par ay-escobar dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 22/02/2014, 10h30
  2. Statistique très simple : PROC SUM
    Par logiclogic dans le forum SAS STAT
    Réponses: 2
    Dernier message: 24/06/2012, 17h42
  3. erreurs (certainement très basiques)
    Par gbauby dans le forum Débuter
    Réponses: 16
    Dernier message: 09/04/2012, 17h48
  4. Mon bot IRC (version très basique)
    Par Invité dans le forum Réseau
    Réponses: 2
    Dernier message: 05/05/2011, 22h12
  5. curses très basiques ...
    Par Akoino dans le forum C
    Réponses: 4
    Dernier message: 05/12/2003, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo