web-dev-qa-db-fra.com

Générateur de caractères aléatoires avec une plage de (A..Z, 0..9) et des signes de ponctuation

Je dois créer un générateur de caractères aléatoires qui renvoie un seul caractère. Le caractère doit être compris entre les lettres de l’alphabet, les chiffres de 0 à 9 et certains caractères tels que,??/-. Tout exemple serait apprécié.

9
jadkins4

Le plus simple est de faire ce qui suit:

  • Créez un String alphabet avec les caractères que vous voulez.
  • Dites N = alphabet.length()
  • Ensuite, nous pouvons demander un Java.util.Random pour un int x = nextInt(N)
  • alphabet.charAt(x) est un caractère aléatoire de l'alphabet

Voici un exemple:

    final String alphabet = "0123456789ABCDE";
    final int N = alphabet.length();

    Random r = new Random();

    for (int i = 0; i < 50; i++) {
        System.out.print(alphabet.charAt(r.nextInt(N)));
    }
39
polygenelubricants

Voir le lien ci-dessous: http://www.asciitable.com/

public static char randomSeriesForThreeCharacter() {
    Random r = new Random();
    char random_3_Char = (char) (48 + r.nextInt(47));
    return random_3_Char;
}

maintenant, vous pouvez générer un caractère à la fois.

10
duggu
  1. Choisissez un nombre aléatoire compris entre [0, x), où x est le nombre de symboles différents. Espérons que le choix est choisi uniformément et non prévisible :-)

  2. Maintenant, choisissez le symbole représentant x.

  3. Profit!

Je commençais à lire Pseudo-aléatoire puis quelques générateurs communs Pseudo-aléatoires . Nous espérons que votre langue a déjà une fonction "aléatoire" appropriée :-)

4
user166390

Voici le code pour les identifiants de session sécurisés, faciles, mais un peu plus coûteux.

import Java.security.SecureRandom;
import Java.math.BigInteger;

public final class SessionIdentifierGenerator
{

  private SecureRandom random = new SecureRandom();

  public String nextSessionId()
  {
    return new BigInteger(130, random).toString(32);
  }

}
3
sanssan

Pourquoi réinventer la roue? RandomStringUtils de Apache Commons possède des fonctions pour lesquelles vous pouvez spécifier le jeu de caractères à partir duquel les caractères sont générés. Vous pouvez apporter ce dont vous avez besoin à votre application:

http://kickjava.com/src/org/Apache/commons/lang/RandomStringUtils.Java.htm

2
Danubian Sailor

Vous devez d’abord créer une chaîne contenant toutes les lettres/tous les chiffres souhaités.
Ensuite, faites un hasard. e. g. Random rnd = new Random;
Enfin, créez quelque chose qui obtienne un caractère aléatoire de votre chaîne contenant votre alphabet.
Par exemple,

import Java.util.Random;

public class randomCharacter {
    public static void main(String[] args) {
        String alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ?/.,";
        Random rnd = new Random();
        char char = alphabet.charAt(rnd.nextInt(alphabet.length()));
        // do whatever you want with the character
    }
}

Voir this .
C'est de là que j'ai eu cette information.

0
user8742736

caractère aléatoire package com.company;

         import Java.util.concurrent.ThreadLocalRandom;

         public class Main {

            public static void main(String[] args) {
            // write your code here
                char hurufBesar =randomSeriesForThreeCharacter(65,90);
                char angka = randomSeriesForThreeCharacter(48,57);
                char simbol = randomSeriesForThreeCharacter(33,47);
                char hurufKecil= randomSeriesForThreeCharacter(97,122);
                char angkaLagi = randomSeriesForThreeCharacter(48,57);

                System.out.println(hurufBesar+" "+angka+" "+simbol+" "+hurufKecil+" "+angkaLagi);
            }

            public static char randomSeriesForThreeCharacter(int min,int max) {
                int randomNumber = ThreadLocalRandom.current().nextInt(min, max + 1);
                char random_3_Char = (char) (randomNumber);
                return random_3_Char;
             }
         }
0
ahmad apandi

En utilisant une simple ligne de commande (script bash):

$ cat /dev/urandom | tr -cd 'a-z0-9,.?/\-' | head -c 30 | xargs
t315,qeqaszwz6kxv?761rf.cj/7gc

$ cat /dev/urandom | tr -cd 'a-z0-9,.?/\-' | head -c 1 | xargs
f
  • cat/dev/urandom: obtient un flux aléatoire de caractères depuis le noyau
  • tr: ne garder que les chars que nous voulons
  • head: ne prend que les premiers caractères n
  • xargs: juste pour ajouter un caractère '\n'
0
Nicolas Viennot
Random random = new Random();
int n = random.nextInt(69) + 32;
if (n > 96) {
    n += 26;
}
char c = (char) n;

Je suppose que cela dépend de la ponctuation que vous souhaitez inclure, mais cela devrait générer un caractère aléatoire incluant toute la ponctuation de cette table ASCII. Fondamentalement, j'ai généré un entier aléatoire de 32 - 96 ou 123 - 126, que j'ai ensuite converti en un caractère, qui donne l'équivalent ASCII de ce nombre. Aussi, assurez-vous que vous import Java.util.Random

0
Ben Patterson