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é.
Le plus simple est de faire ce qui suit:
String alphabet
avec les caractères que vous voulez.N = alphabet.length()
Java.util.Random
pour un int x = nextInt(N)
alphabet.charAt(x)
est un caractère aléatoire de l'alphabetVoici 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)));
}
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.
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 :-)
Maintenant, choisissez le symbole représentant x.
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 :-)
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);
}
}
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
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.
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;
}
}
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
n
'\n'
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