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

générer une suite de nombres aléatoires différents

2 réponses
Avatar
AB
Bonjour à tous,
Je génère souvent des listes de nombres aléatoires avec la fonction ALEA().
Même si la probabilité est extrêmement faible, je pense qu'il est a priori
possible que 2 de ces nombres soient identiques. Comment faire en sorte que
cela n'arrive pas ?
Merci de vos idées.
AB

2 réponses

Avatar
MichDenis
Une fonction personnalisée de Laurent Longre que tu mets dans
un module standard :

'-----------------------------------------
Function ALEA2(Optional Nombre As Long, Optional Tirages As Long)
Application.Volatile True
Dim Arr, I As Integer, J As Integer, K As Integer
On Error Resume Next
If Nombre = 0 Then Nombre = Application.Caller.Cells.Count
If Tirages = 0 Then Tirages = Application.Caller.Cells.Count
ReDim Arr(1 To Nombre, 1 To 1)
For I = 1 To Nombre: Arr(I, 1) = I: Next
Randomize Timer
For I = 1 To Tirages
J = Int(Rnd * (Nombre + 1 - I)) + I
K = Arr(I, 1): Arr(I, 1) = Arr(J, 1): Arr(J, 1) = K
Next I
If Application.Caller.Rows.Count = 1 Then
ALEA2 = Application.Transpose(Arr)
Else: ALEA2 = Arr
End If
End Function
'-----------------------------------------

Et dans la feuille de calcul, tu saisis la plage de
cellules où doit s'afficher le résultat et tu entres
=ALEA2(100;14)
100 = 1 à 100
14 = nombre de tirages sans doublons
Et tu valides par Ctrl + Maj + Enter

Et tu utilises la touche F9 pour obtenir
une nouvelle séquence dans ton tirage....


"AB" a écrit dans le message de news:
%
Bonjour à tous,
Je génère souvent des listes de nombres aléatoires avec la fonction ALEA().
Même si la probabilité est extrêmement faible, je pense qu'il est a priori
possible que 2 de ces nombres soient identiques. Comment faire en sorte que
cela n'arrive pas ?
Merci de vos idées.
AB
Avatar
AB
Ca marche parfaitement.
Grand merci !
André

"MichDenis" a écrit dans le message de news:

Une fonction personnalisée de Laurent Longre que tu mets dans
un module standard :

'-----------------------------------------
Function ALEA2(Optional Nombre As Long, Optional Tirages As Long)
Application.Volatile True
Dim Arr, I As Integer, J As Integer, K As Integer
On Error Resume Next
If Nombre = 0 Then Nombre = Application.Caller.Cells.Count
If Tirages = 0 Then Tirages = Application.Caller.Cells.Count
ReDim Arr(1 To Nombre, 1 To 1)
For I = 1 To Nombre: Arr(I, 1) = I: Next
Randomize Timer
For I = 1 To Tirages
J = Int(Rnd * (Nombre + 1 - I)) + I
K = Arr(I, 1): Arr(I, 1) = Arr(J, 1): Arr(J, 1) = K
Next I
If Application.Caller.Rows.Count = 1 Then
ALEA2 = Application.Transpose(Arr)
Else: ALEA2 = Arr
End If
End Function
'-----------------------------------------

Et dans la feuille de calcul, tu saisis la plage de
cellules où doit s'afficher le résultat et tu entres
=ALEA2(100;14)
100 = 1 à 100
14 = nombre de tirages sans doublons
Et tu valides par Ctrl + Maj + Enter

Et tu utilises la touche F9 pour obtenir
une nouvelle séquence dans ton tirage....


"AB" a écrit dans le message de news:
%
Bonjour à tous,
Je génère souvent des listes de nombres aléatoires avec la fonction
ALEA().
Même si la probabilité est extrêmement faible, je pense qu'il est a priori
possible que 2 de ces nombres soient identiques. Comment faire en sorte
que
cela n'arrive pas ?
Merci de vos idées.
AB