Comment générer de l'aléatoire unique numéro à 16 chiffres figurant dans asp.net sans collision
comment puis-je générer de 16 chiffres, nombres aléatoires, sans aucune répétition en c# asp.net comme j'ai lu le concept de GUID qui génèrent des caractères, de chiffres, mais je ne veux pas les caractères
gentiment suggérer un moyen pour réaliser ce
Si vous créez une série de numéros sans répétition, alors ils ne peuvent pas être aléatoire.
Commencez avec 1 et incrémenter (sérieusement)
Je ne veux pas la série,je veux complètement aléatoire de numéros de 16 chiffres
Utiliser un tableau pour contenir les numéros que vous avez déjà distribued et utiliser un schéma simple à obtenir un prochain numéro. Il pourrait aller comme ceci:
Commencez avec 1 et incrémenter (sérieusement)
Je ne veux pas la série,je veux complètement aléatoire de numéros de 16 chiffres
Utiliser un tableau pour contenir les numéros que vous avez déjà distribued et utiliser un schéma simple à obtenir un prochain numéro. Il pourrait aller comme ceci:
get a random number, while not available: increment. write as used.
OriginalL'auteur Vivek Singh | 2013-02-15
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer un nombre aléatoire à l'aide de la classe au sort:
S'assurer qu'il n'y a pas de collisions exige de vous pour retrouver tous les résultats que vous avez déjà retourné, qui est, en effet, une fuite de mémoire (NB je ne vous recommande pas d'utiliser cette - garder une trace de tous les résultats précédents est une mauvaise idée, compter sur l'entropie d'une chaîne aléatoire de 16 caractères au maximum, si vous voulez plus de singularité, d'augmentation de l'entropie, mais je comprend pour montrer comment il pourrait être fait):
Tout ce que je peux offrir est une probabilité. Il y a 10^16 combinaisons d'un nombre de 16 chiffres, que nous appellerons cette
N
, la création dek
nombres donne une probabilité qu'ils sont tous unique de e^{\frac{ -k(k-1)}{2N}}. À l'aide de 10 millions de dollars en k, ce qui donne une probabilité de 99.004983473%Plutôt que d'un ensemble de hachage, pourriez-vous écrire précédemment retourné nombres dans une base de données? Vous auriez encore une augmentation toujours croissante de la table des nombres à parcourir, mais qui ne devrait pas être un fardeau sur la mémoire, comme le stockage de tous les numéros précédents dans la table de hachage.
Oui, vous , cependant IMO c'est toujours une mauvaise idée - ce n'est pas à l'échelle.
Merci @riches.okelly, je peux voir où il n'a pas d'échelle, mais ce que être une solution évolutive si la db et le hachage des deux n'évoluent pas? (J'ai un problème similaire à l'OP et l'émerveillement de la meilleure façon de le résoudre)
OriginalL'auteur Rich O'Kelly