Génération de chiffres ET de lettres aléatoirement

Utilisateur anonyme - 22 mars 2012 à 19:11
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 23 mars 2012 à 20:08
Bonsoir,
je vous contacte pour savoir comment générer des chiffres ET des lettres aux hasards. Je m'explique.

Pour les chiffre, j'ai ça (de 1 à 9) :
Int((9 * Rnd()) + 1)


Et pour les lettres :
Randomize()
z = Int((26 * Rnd()) + 1)


Maintenant existe-t-il un code qui permet de générer par exemple un chiffre, puis une lettre, puis encore un chiffre, aléatoirement ( sans ordre respectif)

Merci,
Sorpia.
A voir également:

32 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
22 mars 2012 à 19:23
Bonjour,

Pourquoi ne pas faire un tableau et accéder à un élément à chaque fois ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
Utilisateur anonyme
22 mars 2012 à 19:27
Re-Bonjour,
Oula je suis perdu rien quand lisant ta phrase, si tu as du temps et de l'espoir tu pourrai m'expliquer s'il te plaît ? La je dois y allez je reviens dans 1h 30. Au pire si tu as un tutoriel ce serai génial !:D

Merci,
a+.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
22 mars 2012 à 19:31
Bonjour,

Dim MonTab(0 to 35) as string
MonTab(0)="0"
...
Montab(9)="9"
MonTab(10)="A"
...
MonTab(35)="Z"

Ensuite, tu utilises un Rnd mais pour cibler un élément du tableau.


---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 mars 2012 à 19:45
Bonjour,
Maintenant existe-t-il un code qui permet de générer par exemple un chiffre, puis une lettre, puis encore un chiffre, aléatoirement ( sans ordre respectif)

le principe est rigoureusement le même (celui que t'a indiqué Nhenry) !
Un tirage alearoire (lettre ou chiffre) suivi, dans la foulée, du tirage aléatoire y correspondant !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
22 mars 2012 à 20:30
Salut

peut etre ainsi

Dim chiffres As String = "123456789"
        Dim lettres As String = "abcdefghijklmnopqrstuvwxz"
 Dim rnd As New Random
 Dim unelettre As Char
 Dim unchiffre As Integer
 unelettre = Convert.ToChar(lettres.Substring(rnd.Next(0, lettres.Length), 1))
 unchiffre = Convert.ToInt32(chiffres.Substring(rnd.Next(0, chiffres.Length), 1))
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
22 mars 2012 à 20:33
Excuse trompé

tu veux en vb6
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 mars 2012 à 20:39
Bonjour, ami ShayW,

en vb6 ?
En vb6, je pense qu'il aurait intérêt à :
--- ouvrir son aide VB6 sur le mot Ascii
------- y constater les valeurs ascii de 0 à 9
------- y constater les valeurs ascii de A à Z
--- tirer aléatoirement de 0 à 1 et
------- si 0 ==== >> tirer aléatoirement parmi les codes chiffres
------- si 1, tirer aléatoirement parmi les codes lettres

Et pour parfaire son étude : ouvrir son aide VB6 sir le mot Chr .

J'aimerais le voir tenter quelque-chose ainsi, par lui-même, d'abord
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
22 mars 2012 à 20:46
Bonjour Sorpia,

Tiens, testé en vb6

' form 1 : lettres / nombres aléatoires
Option Explicit
Sub Form_Load() ' form1 + 3 objets
  Label1 = ""
  Command1.Caption = "écrit"
  Command2.Caption = "efface"
End Sub

Sub Command1_Click() ' écrit
  Randomize
  Select Case Int((2 - 1 + 1) * Rnd + 1) ' 1 ou 2
    Case 1
      Randomize
      Label1 = Label1 & Chr(Int((57 - 49 + 1) * Rnd + 49)) ' chiffre
    Case 2
      Randomize
      Label1 = Label1 & Chr(Int((122 - 97 + 1) * Rnd + 97))  ' lettre
  End Select
End Sub

Sub Command2_Click(): Label1 = "": End Sub ' efface


Cordialement, Joe.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 mars 2012 à 20:53
Bonjour, EhJoe,
Geztil mais ===>>> lui as-tu vraiment rendu ainsi service ? (ce n'est qu'une question, avant d'aller faire dodo).

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
22 mars 2012 à 21:08
Bonjour Ucfoutu

J'aimerais le voir tenter quelque-chose ainsi, par lui-même, d'abord


beaucoup mieux
c'est en forgeant qu'on devient forgerons
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
22 mars 2012 à 21:13
Ave Jacques,

Oui, je pense que je lui ai rendu service, car il y a moult personnes qui viennent pour avoir un bout de code afin de résoudre un problème ponctuel, mais qui évidemment ne vont pas apprendre réellement à programmer pour si peu, c'est évident ; alors la seule solution est de leur faire ou de les envoyer paître.

Le code présente l'avantage qu'on peut ensuite si on a ce qu'il faut d'esprit, le tester, le triturer afin de comprendre le mécanisme et d'aller de l'avant éventuellement. C'est comme ça qu'on fait à l'école : Cours, exemples, exercices, c'est l'unique façon d'apprendre. Un dictionnaire sans citation n'a aucune utilité puisqu'on ne connais pas la façon d'utiliser le mot (Robert est le meilleur en Français), et bien c'est pareil pour le reste, une explication sans exemple est à mon sens inutile, pour celui qui ne sais pas...

D'autant qu'en sus, si on regarde, y en a pas énormément qui programment, ceux qui arrivent avec des BDD ou du Excel ou du Grid (ils veulent tout mettre en grille à cause du cerveau quadrillé par trop d'Excel, alors qu'en gestion on ne n'utilise jamais les grilles, aucun document comptable officiel n'a de grilles) ou autres bêtes dans leur code, pour moi il viennet tenter de bidouiller un morceau de code de liaison mais ne savent pas faire une programmation indépendante (qu'en code)...

Je ne me prends pas pour un chevalier, ça m'a aussi donné l'occasion de m'amuser un quart d'heure avec le bon vieux vb6.

Cordialement, Joe.
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
22 mars 2012 à 21:17
Bonjour ShayW,

Vois la réponse faite par moi à ucFoutu ci-dessus.

T'en as qui ne vont pas apprendre la programmation pour un bout de code, ce qui est logique, alors, soit tu les envoies paître, soit tu leur fais

Cordialement, Joe.
0
Utilisateur anonyme
22 mars 2012 à 23:00
Bonjour à tous,
Joe j'ai lu ton code et j'ai compris, je vais l'essayer demain.

NHenry merci aussi de ton aide,j'essayerai aussi tous ça demain.

Bonne nuit.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 mars 2012 à 07:30
Ouais ...
EhJoe,
Sorpia ne me parait pas être dans le cas que tu exposes (regarde donc ses autres demandes). Il en est à commencer à développer.
C'est d'ailleurs la raison pour laquelle je lui donnais des indications simples (3 tirages, 1 pour savoir si chiffre ou lettre, et les 2 autres en fonction du 1er) !
Ce qu'il veut faire me parait beaucoup plus être la composition d'une clé de validation (soit pour lui-même, soit en exercice). Et je ne vois pas trop quel autre utilité cela pourrait avoir .

Si, toutefois, l'on se place dans l'hypothèse d'un demandeur sporadique (donc pas d'un développeur) ===>> un seul tirage, de 0 à 35, suffit parfaitement.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 mars 2012 à 07:39
A analyser, donc, en 3 lignes de code
Randomize
toto = Int((35 * Rnd))
If toto > 9 Then toto = toto + 7
toto = toto + 48

Ce n'était que de l'arithmétique
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 mars 2012 à 07:43
ah (mais cela tombe sous le sens) ===>> la dernière ligne est bien sur
 toto = Chr(toto + 48)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Utilisateur anonyme
23 mars 2012 à 07:45
Je vous remerci tous pour votre aide mais la je ne peux pas encore essayé. Tu as vu juste je commence à programmer et oui c'est pour générer des clées, mais c'est surtout comme tu l'as dit un exercice.

Sorpia.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
23 mars 2012 à 10:09
Bonjour,

Ucfoutu,
toto = Chr(toto + 48)
Toto est un entier ou une chaine de caractères ?

Bonne pratique à prendre, Sorpia, toujours typer fortement les variables et éviter les conversions implicites, au moins, ça limite le risque d'erreur.

Mon site
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 mars 2012 à 10:36
Bonjour NHenry
Ce n'était que pour l'exemple de calcul arithmétique
Mais mets-le en Entier, si tu veux ===>>
Randomize
toto = Int((35 * Rnd))
If toto > 9 Then toto = toto + 7
msgbox Chr(toto + 48)


ou encore, en alimentant une listbox :
List1.additem Chr(toto + 48)

et la question ne se pose donc plus.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 mars 2012 à 10:46
et puis tiens, faisons aussi la clé, pendant qu'on y est ...
 Dim cle As String, toto As Integer, longueur_cle As Integer, i As Integer
  Randomize
  longueur_cle = 15
  For i = 1 To longueur_cle
    toto = Int((35 * Rnd))
    If toto > 9 Then toto = toto + 7
    cle = cle & Chr(toto + 48)
  Next
  MsgBox cle

et Sorpia aura (heu...) ainsi mérité sa note !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous