Est-il un moyen de générer de façon aléatoire un UUID, qui se compose uniquement de chiffres?
De Java est l'UUID de la classe génère de façon aléatoire un UUID. Mais il s'agit de lettres et des chiffres. Pour certaines applications, nous avons besoin uniquement de chiffres. Est-il un moyen de générer de l'aléatoire UUID qui ne contient que des chiffres en Java ?
UUID.randomUUID();
OriginalL'auteur rosh | 2011-11-11
Vous devez vous connecter pour publier un commentaire.
Si vous ne voulez pas un nombre aléatoire, mais un UUID avec les numéros d'utiliser seulement:
dans ce cas gauche matelassée à 40 zéros...
résultats pour:
UUID : b55081fa-9cd1-48c2-95d4-efe2db322a54
dans:
UUID : 0241008287272164729465721528295504357972
OriginalL'auteur Chris Eibl
Pourquoi ne pas tout simplement de générer
au Hasard
nombre et le mettre en format que vous voulez?Cela ne vous donnera pas l'unicité de la boîte. (c'est à dire que Vous aurez à mettre en œuvre vérifier sur chaque génération et de la logique de nouvelle tentative)
Alors que d'autres solutions qui prennent l'UUID de bits et de les convertir en nombre sera plus précis dans l'unicité. en fonction de votre cas d'utilisation, vous pouvez toujours vérifier l'unicité de cette approche.
Random
n'est pas universellement unique.Nombre aléatoire n'est pas unique.
Ai-je manqué de le mentionner ? @pheonix
OriginalL'auteur Jigar Joshi
Bien que l'original de l'affiche de cette question marqué @Jigar Joshi la question comme la meilleure réponse, j'aimerais ajouter qu'il y a une justification à l'utilisation des Uuid plutôt que de nombres aléatoires dans certains cas. La différence est que les Uuid sont (universellement) unique (d'où le nom), tandis que les nombres aléatoires sont pas. C'est juste une question de probabilité si vous obtenez le même nombre en deux fois ou plus souvent lors de la génération de nombres aléatoires, mais cela n'arrivera jamais avec des Uuid. Donc, je voudrais examiner @Chris Eibl de la réponse que le meilleur.
OriginalL'auteur foobar
OriginalL'auteur jkschneider
Pour l'enregistrement: Uuid sont en fait des nombres de 128 bits.
Ce que vous voyez comme une chaîne alphanumérique est la représentation de 128 bits à l'aide de chiffres hexadécimaux (0..9A..F).
La vraie solution est de transformer la chaîne en elle le correspondant de 128 bits. Et à la banque que vous aurez besoin de deux Longs (Long a 64 bits).
OriginalL'auteur Pablo Pazos
Pourquoi utiliser l'UUID de la classe, si vous n'avez pas besoin d'un UUID? Ça sonne plus comme vous avez juste besoin d'un numéro aléatoire qui peut être réalisé à l'aide de la
java.util.Random
classe.OriginalL'auteur Malax
Random
n'est pas universellement unique. Si vous souhaitez utiliserUUIDs
par opposition à laau Hasard
classe comme suggéré par d'autres, vous pouvez simplement utiliser une regex pour dépouiller tout, sauf les nombres à partir de l'UUID. Essayez quelque chose comme cela,String id = UUID.randomUUID().toString().replaceAll("[^0-9]", "");
Qui permettrait d'améliorer considérablement la probabilité de collision.
Ouais, le taux de collision est plus élevé.
OriginalL'auteur Scrotch
Appel
hashCode()
sur l'UUID pour obtenir un entier unique.hashCode()
n'est pas une fonction inversible. Ne doit jamais être utilisé pour l'unicité.Un peu de musique, mais tout à fait correct de la mise en œuvre de
hashCode()
seraitreturn 1;
OriginalL'auteur Graham Borland
Chaîne uuid = UUID.randomUUID().toString().replaceAll("-", "");
//bandes '-'
OriginalL'auteur user2337092