Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

générer et trier nombres entiers ou décimaux

1 réponse
Avatar
Pascal
Bonjour
Je me demande si vous pourriez m'aider: Je suis en train de construire un
logiciel pour mes élèves (école primaire) dans lequel je vais utiliser des
nombres aléatoires (entiers ou décimaux) Par exemple, j'ai besoin de dix
numéros figurant dans dix étiquettes différentes, et en faisant des
glisser-déposer, ils ont à les trier en ordre croissant ou décroissant, dans
10 autres labels. Ainsi, lorsqu'ils cliquent sur un bouton pour vérifier
leur travail, j'ai besoin de vérifier si les chiffres sont de l'ensemble
généré par l'ordinateur (c'est pour éviter la triche: les élèves pourraient
avoir écrit dix simples numéros, de 1 à 11 par exemple, dans les étiquettes
avant de valider leur travail!) et si elles sont dans l'ordre correct.
L'interface fonctionne bien, les glisser-déposez aussi etc. Mais la
génération et le tri de 10 nombres aléatoires uniques, pose un problème.
Voici le code actuel :

Public Shared Function GenArrayNbres(ByVal Lower As Long, ByVal Upper As
Long, _
Optional ByVal HowMany As Integer = 1, _
Optional ByVal Unique As Boolean = True) As Object
Dim c As New Collection
Dim list As Integer() = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Dim ajout As Boolean = True
If HowMany < ((Upper + 1) - (Lower - 1)) Then
Try
ReDim list(HowMany - 1) 'redimensinner le tableau en fonction de la quantité
de nombres à obtenir
list(0) = GenNombre(Lower, Upper) 'initialise le tableau
For i As Integer = 1 To HowMany - 1
If Unique Then ' si pas de doublon
'ReDim Preserve list(i) 'on redimensionne le tableau
list(i) = GenNombre(Lower, Upper) ' on tire un nombre
Do 'on compare l'élément en cours avec chaque élément du tableau
For j As Integer = 0 To i - 1 'list.Length - 2
If list(i) = list(j) Then 'l'élément existe déjà
Unique = False
Exit For 'on sort de la boucle de test
End If
Next
list(i) = GenNombre(Lower, Upper) 'on tire à nouveau
Loop Until Unique = True
Else
list(i) = GenNombre(Lower, Upper)
End If
Next
Catch ex As ApplicationException
End Try
Else
MsgBox("Attention aux valeurs choisies" & Chr(13) & "max-min > Nbres",
MsgBoxStyle.Exclamation, "Erreur")
End If
GenArrayNbres = list
End Function

Merci de votre aide
pascal






































http://www.scalpa.info
http://scalpa98.blogspot.com/

1 réponse

Avatar
Bill2
Pascal wrote:

aussi etc. Mais la génération et le tri de 10 nombres aléatoires
uniques, pose un problème. Voici le code actuel :




je vous propose un truc "con" pour générer vos nombres

- vous générez un 1er nombre, que vous mémorisez dans votre tableau
- ensuite, vous utilisez ce nombre, auquel vous ajouter un nouveau nb
aléatoire, résultat que vous ajoutez au tableau
- ainsi de suite jusqu'à avoir le nb de nombre voulu.

A la fin, vus avez donc un tableau contenant N nombres aléatoires uniques,
triés.

Maintenant, il ne vous reste plus qu'à "mélanger" ce tableau, en remplacant
aleatoirement des couples de nombres :)

--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/