2010-09-29 8 views
1

J'ai deux chiffres:Puis-je générer un nombre aléatoire de 6 chiffres basé sur deux nombres?

  1. IMEI Numéro: 12345678912345
  2. Aléatoire Pin: 654321

Mes aléatoires picot change toujours. Basé sur cette combinaison (IMEI et PIN) est-il possible de générer un nombre aléatoire de 6 chiffres?

Je veux le faire en C#.

+0

Voulez-vous un nombre aléatoire de 6 chiffres, ou voulez-vous le IMEI + PIN pour générer le même nombre à chaque fois (par exemple une sorte de hash)? – Robaticus

+0

oui et je veux aussi 100 numéro unique basé sur ce IMEI + PIN – Hasnain

Répondre

1

Que diriez-vous de (IMEI + Pin)% 900000 + 100000?

+0

j'aime le mod 900000 plus 100000. pas vu que avant! – soniiic

1

La façon la plus simple consiste à interroger le générateur de nombres aléatoires avec une fonction des deux nombres

Random r = new Random(IMEA+Pin); 
int v = r.Next()%900000 + 100000; 

dans cet exemple, la fonction est simplement la somme mais vous pouvez trouver quelque chose de plus senseful sûr .. il est juste pour vous donner l'idée.

+0

Erreur de compilation ... La meilleure correspondance de méthode surchargée pour 'System.Random.Random (int)' a des arguments invalides à la ligne 1 colonne 12 Argument 1: impossible de convertir de 'long' en 'int' à la ligne 1 colonne 23 – soniiic

+0

Aléatoire r = nouveau Aléatoire (IMEA + Pin); nombre aléatoire dosnt accepter double il prend int comme paramètre ... comme IMEI + PIN est numéro à 19 chiffres – Hasnain

+1

Juste modulo à la limite de l'argument (int) (IMEA + Pin% int.Max) – Jack

1

Version fixe de la réponse de Jack

int seed = unchecked((int)(imie+pin)); 
Random r = new Random(seed); 
int[] result = new int[100]; 
for (int i = 0; i < 100; i++) { 
    result[i] = r.Next() % 900000 + 100000; 
} 

modifier de réponse fixe comme par la révélation soudaine que vous avez besoin 100 numéros

Questions connexes