Alea

4 réponses
Avatar
Manu
Bonjour,

Est t'il possible de faire une fx Alea.entre.borne(1;20) que je vais tirer
sur 20 cellules mais que chaque résultat soit différent, c'est à dire que
sur les 20 cellules résultats, qu'il n'y ais jamais 2 fois le même nombre.

Merci

Manu


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com

4 réponses

Avatar
GL
Le 28/03/2015 13:31, Manu a écrit :
Bonjour,

Est t'il possible de faire une fx Alea.entre.borne(1;20) que je vais
tirer sur 20 cellules mais que chaque résultat soit différent, c'est à
dire que sur les 20 cellules résultats, qu'il n'y ais jamais 2 fois le
même nombre.

Merci

Manu



Oui ça s'appelle une permutation aléatoire. Mais excel ne fournit pas
la fonction. On peut faire :

sur A1:A20 : =ALEA()
sur B1:B20 : =EQUATION.RANG(A1;$A$1:$A$20)

ce n'est pas super rigoureux, car si ALEA() renvoie deux fois le même
nombre, EQUATION.RANG renverra aussi deux fois le même nombre : on
n'aura donc pas une permutation, mais une surjection. Il y a moyen
de contourner le problème (avec NB.SI notamment) mais la probabilité
pour que ALEA() renvoie deux fois le même nombre est infinitésimale...

Florent.
Avatar
Manu
Ca fonctionne très bien !

Merci Florent.

Manu


"GL" a écrit dans le message de groupe de discussion :
5516ad4a$0$3339$

Le 28/03/2015 13:31, Manu a écrit :
Bonjour,

Est t'il possible de faire une fx Alea.entre.borne(1;20) que je vais
tirer sur 20 cellules mais que chaque résultat soit différent, c'est à
dire que sur les 20 cellules résultats, qu'il n'y ais jamais 2 fois le
même nombre.

Merci

Manu



Oui ça s'appelle une permutation aléatoire. Mais excel ne fournit pas
la fonction. On peut faire :

sur A1:A20 : =ALEA()
sur B1:B20 : =EQUATION.RANG(A1;$A$1:$A$20)

ce n'est pas super rigoureux, car si ALEA() renvoie deux fois le même
nombre, EQUATION.RANG renverra aussi deux fois le même nombre : on
n'aura donc pas une permutation, mais une surjection. Il y a moyen
de contourner le problème (avec NB.SI notamment) mais la probabilité
pour que ALEA() renvoie deux fois le même nombre est infinitésimale...

Florent.


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
GL
Le 28/03/2015 15:23, Manu a écrit :
Ca fonctionne très bien !

Merci Florent.

Manu



Derien. Sinon vous pouvez aller dans Avast
-> Paramètres -> Protection Active -> Agent Mail, Personnaliser
et décocher les cases :
- Analyser le courrier sortant (SMTP)
- Analyser les messages News (NNTP)

Ca supprime le vilain bandeau, et comme on dit sur la toile, c'est à
celui qui reçoit le message de s'assurer qu'il n'y a pas d'antrax
dedans, pas à celui qui l'envoie !


---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com

Avatar
MichD
Bonjour,

Une petite macro au besoin...

'---------------------------------------------------
Sub test()
Dim Dic As Object, X As Long, A As Long
Dim Limite_Inf As Long, LimiteSup As Long
Dim Nb As Long

Limite_Inf = 1: LimiteSup = 20
Nb = 20 'Nombre de valeurs différentes à tirer

Set Dic = CreateObject("Scripting.dictionary")

While Dic.Count < Nb
Randomize
X = Application.RandBetween(Limite_Inf, LimiteSup)
If Not Dic.exists(X) Then
A = A + 1
DoEvents
Dic.Add X, A
End If
Dic(X) = X
Wend

With Worksheets("Feuil1") 'Nom feuille à adapter
'Pour écrire en colonne le résultat de A1:A20
.Range("A1").Resize(Nb) = Application.Transpose(Dic.keys)

'Pour écrire en ligne le résultat
.Range("A1").Resize(, Nb) = Dic.keys
End With
End Sub
'---------------------------------------------------

"Manu" a écrit dans le message de groupe de discussion : mf66v9$fei$

Bonjour,

Est t'il possible de faire une fx Alea.entre.borne(1;20) que je vais tirer
sur 20 cellules mais que chaque résultat soit différent, c'est à dire que
sur les 20 cellules résultats, qu'il n'y ais jamais 2 fois le même nombre.

Merci

Manu


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com