générer une suite de nombres aléatoires différents
2 réponses
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <ABspamophobe1@marseille.com> a écrit dans le message de news:
%23rGjzNzKHHA.3560@TK2MSFTNGP02.phx.gbl...
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
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
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
Ca marche parfaitement.
Grand merci !
André
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
u3eGqV1KHHA.3952@TK2MSFTNGP02.phx.gbl...
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" <ABspamophobe1@marseille.com> a écrit dans le message de news:
%23rGjzNzKHHA.3560@TK2MSFTNGP02.phx.gbl...
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
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