Générer un char, avec la fréquence d'apparition des lettres
Résolu/Fermé
Youssef.Idelhadj
Messages postés
14
Date d'inscription
mercredi 21 novembre 2012
Statut
Membre
Dernière intervention
17 mars 2016
-
24 nov. 2013 à 20:50
Youssef.Idelhadj Messages postés 14 Date d'inscription mercredi 21 novembre 2012 Statut Membre Dernière intervention 17 mars 2016 - 24 nov. 2013 à 22:07
Youssef.Idelhadj Messages postés 14 Date d'inscription mercredi 21 novembre 2012 Statut Membre Dernière intervention 17 mars 2016 - 24 nov. 2013 à 22:07
A voir également:
- Générer un char, avec la fréquence d'apparition des lettres
- Dans le texte, un seul mot a réellement été écrit en lettres capitales (majuscules). quel est ce mot ? ✓ - Forum Word
- Dans la table des matières de ce document, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
- Nous limitons la frequence de certaines actions instagram ✓ - Forum Instagram
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Bureautique
- Fréquence du processeur - Guide
2 réponses
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
Modifié par KX le 24/11/2013 à 21:05
Modifié par KX le 24/11/2013 à 21:05
Tu dois créer un tableau avec les différentes lettres que tu veux utiliser, avec plusieurs fois les mêmes lettres pour augmenter la probabilité de les choisir.
Pour comprendre : si "e" a 14% de chances d'apparaître, tu peux prendre un tableau de 100 cases avec 14 lettres "e".
Avec le tableau que tu as donné, la plus petite fréquence est avec le "k" qui est à 0.05%. On pourrait donc considérer que une case=0.05%, tu auras donc un tableau à 2000 cases, avec une seule lettre "k" et 294 lettres "e" (294/2000=14.7%)
Attention : dans ton tableau les pourcentages tiennent comptent de lettres accentués qu'il faudra sans doute exclure...La confiance n'exclut pas le contrôle
Pour comprendre : si "e" a 14% de chances d'apparaître, tu peux prendre un tableau de 100 cases avec 14 lettres "e".
Avec le tableau que tu as donné, la plus petite fréquence est avec le "k" qui est à 0.05%. On pourrait donc considérer que une case=0.05%, tu auras donc un tableau à 2000 cases, avec une seule lettre "k" et 294 lettres "e" (294/2000=14.7%)
Attention : dans ton tableau les pourcentages tiennent comptent de lettres accentués qu'il faudra sans doute exclure...La confiance n'exclut pas le contrôle
Youssef.Idelhadj
Messages postés
14
Date d'inscription
mercredi 21 novembre 2012
Statut
Membre
Dernière intervention
17 mars 2016
24 nov. 2013 à 22:07
24 nov. 2013 à 22:07
Franchement, je ne sais plus quoi dire :D c'est exactement ce que je cherchais, un grand merci pour vous Monsieur, je vais mettre le sujet en Résolu :) merci encore une fois
24 nov. 2013 à 21:48
import java.util.Random; public enum Letter { A(158), B(19), C(67), D(76), E(304), F(22), G(18), H(15), I(155), J(11), K(1), L(113), M(61), N(147), O(111), P(62), Q(28), R(135), S(164), T(150), U(130), V(34), W(2), X(8), Y(6), Z(3); private final int occ; private Letter(int occ) { this.occ = occ; } private static char[] tab = null; private static void fillTab() { int n = 0; for (Letter v : Letter.values()) n += v.occ; tab = new char[n]; int i = 0; for (Letter v : Letter.values()) for (int j = 0; j < v.occ; i++ , j++ ) tab[i] = v.toString().charAt(0); } public double getFrequency() { if (tab == null) fillTab(); return ((double) occ) / tab.length; } private static Random rand = new Random(); public static char random() { if (tab == null) fillTab(); return tab[rand.nextInt(tab.length)]; } }Une petite classe de test :
public class Test { public static void main(String[] args) { System.out.println(Letter.A.getFrequency()); // 0.079 for (int i = 0; i < 10; i++ ) System.out.print(Letter.random()); } }