2016-02-04 2 views
1

Comment pouvons-nous personnaliser le code avec la fonction rand() afin de générer un nombre à n chiffres, où n < 8, sans chiffre en double? Supposons que je veux générer un nombre de 4 chiffres de 1000 à 9999, ce nombre ne doit pas contenir de doublons: par exemple 1023 4798, etc Btw, nous ne pouvons pas généraliser n.Utilisation de rand() pour générer un nombre sans chiffres dupliqués

Edits

I écrémé par les réponses à la question que j'Adressé à. Je pense honnêtement que le problème de générer une séquence de chiffres sans un seul doublon est à mon avis plus facile que de générer un nombre sans chiffres en double. Toujours à la recherche d'une réponse

Mon code est un vrai bordel et ne contient aucun essai pour résoudre le problème. J'ai un brouillon papier mais il est toujours basé sur l'attribution d'une variable entière à chaque chiffre d'un nombre et d'une petite boucle qui vérifie si certaines d'entre elles sont égales et incrémente/décrémente l'une d'entre elles. Cela me semble même une mauvaise idée, mais c'est tout ce que je peux faire.

+1

Je ne suis pas sûr que la copie est appropriée. Cela demande comment empêcher les chiffres de se répéter, pas les chiffres de la séquence. Je pense que vous pourriez le faire en mélangeant les chiffres 0-9 et en prenant les premiers chiffres «n». –

+1

Je suis d'accord que ce n'est pas la même question, mais qu'avez-vous essayé? Veuillez poster votre code, et montrer où il échoue. –

+0

Je ne travaille pas spécifiquement sur ce problème, je suis un peu nouveau dans la programmation et j'ai juste commencé à apprendre. J'ai vraiment fait de mon mieux pour surfer sur internet du bas vers le haut, mais je n'arrivais toujours pas à trouver la bonne réponse. –

Répondre

3

Vous avez plusieurs choix évidents:

  1. Choisissez un nombre aléatoire et si elle contient des chiffres similaires, décrochez à nouveau. Cela peut devenir lent si n est élevé.

  2. Mélangez les chiffres de 0 à 9 de façon aléatoire et prenez les n premiers chiffres.

  3. Conserver un tableau des autres chiffres. Choisissez un élément du tableau de manière aléatoire et supprimez-le du tableau. Répétez pour le nombre de chiffres dont vous avez besoin.

Si zéro n'est pas un premier chiffre légal, vous devrez contourner cela. Il devrait être évident comment faire cela dans chacun de ces cas. Vous pouvez toujours choisir à nouveau si le nombre résultant est trop bas.

+0

(3) pourrait être considéré simplement comme une stratégie de mise en œuvre pour (2). – rici

+0

Merci pour votre réponse. Bien que vous disiez que (1) prend beaucoup de temps à compiler, cela a bien fonctionné. –