1
votes

Est-il possible d'écrire un générateur de lettres aléatoires aussi court qu'en python?

Je veux donc raccourcir mon code et je me suis demandé s'il y avait une possibilité qu'un générateur de lettres aléatoires en Java soit aussi court qu'en python. En python, ce n'est qu'une seule doublure.

Le code suivant est encore mon code:

int random = (int) Math.random()*25;

String[] letters ={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}; 

String letter = letters[random]; 


5 commentaires

Salut Pereki, ce serait bien de poster votre code :)


Jusqu'à quel point Python peut-il le faire, et quelle métrique de «court» voulez-vous? Personnages? Pas? Autre chose?


Si vous demandez une comparaison, ce serait bien de savoir à quoi nous comparons, c'est-à-dire à quel point Python peut-il le faire?


Qu'est-il arrivé à x , y et z ?


lol, c'est assez drôle, merci pour ton rappel


3 Réponses :


5
votes

Si "court" signifie juste une ligne, alors n'importe lequel de ces éléments ferait l'affaire:

char letter = "abcdefghijklmnopqrstuvwxyz".charAt((int) (Math.random() * 26));

char letter = (char) ThreadLocalRandom.current().nextInt('a', 'z'+1);

char letter = (char) ('a' + Math.random() * 26);


0 commentaires

1
votes

Utilisez la table ASCII. 97 = 'a', alors ajoutez simplement votre nombre aléatoire à cela et convertissez-le en caractère.

Table ASCII a >

public class MyClass {
    public static void main(String args[]) {
        char z = (char)(97 + Math.random()*26);
        System.out.println("z = " + z);
    }
}


1 commentaires

Utilisez 'a' , et non 97, pour rendre le code un peu plus auto-documenté.



0
votes

Ceci est la version la plus courte pour créer 100 caractères:

Character[] result = new Random().ints(100,'a','z'+1).mapToObj(ch -> (char)ch).toArray(Character[]::new);


0 commentaires