Cette macro génère n nombres entiers différents
choisis au hasard entre a et b (bornes incluses).
bi : nom de la cellule contenant a
bs : nom de la cellule contenant b
nombre : nom de la cellule contenant n
Dans cette macro, j'utilse Rnd().
Je pourrais changer Rnd pour Rnd() ou ajouter
Randomize juste avant v = Int((b - a + 1) * Rnd() + a)
Quatre scénarios :
1) Rnd sans Randomize
2) Rnd et Randomize
3) Rnd() sans Randomize
4) Rnd() et Randomize
Question :
Qu'est-ce qui distingue chacun de ces scénarios
quant au résultat obtenu ?
Sub HasardSansDoublons()
a = [bi]
b = [bs]
n = [nombre]
If n > b - a + 1 Then
MsgBox Prompt:="Il faut que n soit plus petit que " & b - a + 2 & ".", Title:=" Impossible !"
Exit Sub
End If
[a3:a65536].ClearContents
Set dico = CreateObject("Scripting.Dictionary")
Do Until i = n
v = Int((b - a + 1) * Rnd() + a)
If Not dico.Exists(v) Then
dico.Add v, v
i = i + 1
End If
Loop
[a4].Resize(i) = Application.Transpose(dico.items)
End Sub
"garnote" a écrit dans le message de groupe de discussion :
Bonjour, Bonjour et Merci, Merci,
Cette macro génère n nombres entiers différents choisis au hasard entre a et b (bornes incluses). bi : nom de la cellule contenant a bs : nom de la cellule contenant b nombre : nom de la cellule contenant n Dans cette macro, j'utilse Rnd(). Je pourrais changer Rnd pour Rnd() ou ajouter Randomize juste avant v = Int((b - a + 1) * Rnd() + a) Quatre scénarios : 1) Rnd sans Randomize 2) Rnd et Randomize 3) Rnd() sans Randomize 4) Rnd() et Randomize
Question : Qu'est-ce qui distingue chacun de ces scénarios quant au résultat obtenu ?
Sub HasardSansDoublons() a = [bi] b = [bs] n = [nombre] If n > b - a + 1 Then MsgBox Prompt:="Il faut que n soit plus petit que " & b - a + 2 & ".", Title:=" Impossible !" Exit Sub End If [a3:a65536].ClearContents Set dico = CreateObject("Scripting.Dictionary") Do Until i = n v = Int((b - a + 1) * Rnd() + a) If Not dico.Exists(v) Then dico.Add v, v i = i + 1 End If Loop [a4].Resize(i) = Application.Transpose(dico.items) End Sub
Serge
Une tite adresse et un peu de lecture en anglais
Tu lis la section : "Random Number and Randomize Statement"
"garnote" <garnote3RIEN@videotron.ca> a écrit dans le message de groupe de discussion :
eXjsoJyqJHA.5456@TK2MSFTNGP02.phx.gbl...
Bonjour, Bonjour et Merci, Merci,
Cette macro génère n nombres entiers différents
choisis au hasard entre a et b (bornes incluses).
bi : nom de la cellule contenant a
bs : nom de la cellule contenant b
nombre : nom de la cellule contenant n
Dans cette macro, j'utilse Rnd().
Je pourrais changer Rnd pour Rnd() ou ajouter
Randomize juste avant v = Int((b - a + 1) * Rnd() + a)
Quatre scénarios :
1) Rnd sans Randomize
2) Rnd et Randomize
3) Rnd() sans Randomize
4) Rnd() et Randomize
Question :
Qu'est-ce qui distingue chacun de ces scénarios
quant au résultat obtenu ?
Sub HasardSansDoublons()
a = [bi]
b = [bs]
n = [nombre]
If n > b - a + 1 Then
MsgBox Prompt:="Il faut que n soit plus petit que " & b - a + 2 & ".",
Title:=" Impossible !"
Exit Sub
End If
[a3:a65536].ClearContents
Set dico = CreateObject("Scripting.Dictionary")
Do Until i = n
v = Int((b - a + 1) * Rnd() + a)
If Not dico.Exists(v) Then
dico.Add v, v
i = i + 1
End If
Loop
[a4].Resize(i) = Application.Transpose(dico.items)
End Sub
"garnote" a écrit dans le message de groupe de discussion :
Bonjour, Bonjour et Merci, Merci,
Cette macro génère n nombres entiers différents choisis au hasard entre a et b (bornes incluses). bi : nom de la cellule contenant a bs : nom de la cellule contenant b nombre : nom de la cellule contenant n Dans cette macro, j'utilse Rnd(). Je pourrais changer Rnd pour Rnd() ou ajouter Randomize juste avant v = Int((b - a + 1) * Rnd() + a) Quatre scénarios : 1) Rnd sans Randomize 2) Rnd et Randomize 3) Rnd() sans Randomize 4) Rnd() et Randomize
Question : Qu'est-ce qui distingue chacun de ces scénarios quant au résultat obtenu ?
Sub HasardSansDoublons() a = [bi] b = [bs] n = [nombre] If n > b - a + 1 Then MsgBox Prompt:="Il faut que n soit plus petit que " & b - a + 2 & ".", Title:=" Impossible !" Exit Sub End If [a3:a65536].ClearContents Set dico = CreateObject("Scripting.Dictionary") Do Until i = n v = Int((b - a + 1) * Rnd() + a) If Not dico.Exists(v) Then dico.Add v, v i = i + 1 End If Loop [a4].Resize(i) = Application.Transpose(dico.items) End Sub
Serge
MichDenis
Maintenant que tu as lu le cours 101 sur Rnd et randomize avec petit exemple ;-)
Tu dois te reporter à l'aide d'excel :
Rnd(number) La valeur de l'argument "number" définit le mode de génération adopté par Rnd :
Quelle que soit la valeur initiale indiquée, la même série de nombres aléatoires est générée à chaque appel de la fonction Rnd, car cette dernière réutilise le nombre aléatoire précédent comme valeur initiale pour le calcul du nombre suivant.
En conséquence : Randomize utilise l'argument "number" pour initialiser le générateur de nombres aléatoires de la fonction Rnd en lui donnant une nouvelle valeur initiale. Si l'argument number est omis, la valeur renvoyée par l'horloge système sert de valeur initiale.
L'argument number pourrait bien être défini par une fonction de ton application !
Le choix de la méthode dépend de ce que l'utilisateur a besoin pour mélanger les cartes ;-)
"MichDenis" a écrit dans le message de groupe de discussion :
Une tite adresse et un peu de lecture en anglais
Tu lis la section : "Random Number and Randomize Statement"
"garnote" a écrit dans le message de groupe de discussion :
Bonjour, Bonjour et Merci, Merci,
Cette macro génère n nombres entiers différents choisis au hasard entre a et b (bornes incluses). bi : nom de la cellule contenant a bs : nom de la cellule contenant b nombre : nom de la cellule contenant n Dans cette macro, j'utilse Rnd(). Je pourrais changer Rnd pour Rnd() ou ajouter Randomize juste avant v = Int((b - a + 1) * Rnd() + a) Quatre scénarios : 1) Rnd sans Randomize 2) Rnd et Randomize 3) Rnd() sans Randomize 4) Rnd() et Randomize
Question : Qu'est-ce qui distingue chacun de ces scénarios quant au résultat obtenu ?
Sub HasardSansDoublons() a = [bi] b = [bs] n = [nombre] If n > b - a + 1 Then MsgBox Prompt:="Il faut que n soit plus petit que " & b - a + 2 & ".", Title:=" Impossible !" Exit Sub End If [a3:a65536].ClearContents Set dico = CreateObject("Scripting.Dictionary") Do Until i = n v = Int((b - a + 1) * Rnd() + a) If Not dico.Exists(v) Then dico.Add v, v i = i + 1 End If Loop [a4].Resize(i) = Application.Transpose(dico.items) End Sub
Serge
Maintenant que tu as lu le cours 101 sur Rnd et randomize avec petit exemple ;-)
Tu dois te reporter à l'aide d'excel :
Rnd(number)
La valeur de l'argument "number" définit le mode de génération adopté par Rnd :
Quelle que soit la valeur initiale indiquée, la même série de nombres aléatoires est
générée à chaque appel de la fonction Rnd, car cette dernière réutilise le nombre
aléatoire précédent comme valeur initiale pour le calcul du nombre suivant.
En conséquence :
Randomize utilise l'argument "number" pour initialiser le générateur de nombres aléatoires
de la fonction Rnd en lui donnant une nouvelle valeur initiale. Si l'argument number est
omis, la valeur renvoyée par l'horloge système sert de valeur initiale.
L'argument number pourrait bien être défini par une fonction de ton application !
Le choix de la méthode dépend de ce que l'utilisateur a besoin pour mélanger les cartes
;-)
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de groupe de discussion :
DC5E58B9-9FC2-4A68-874A-B7CB2E889148@microsoft.com...
Une tite adresse et un peu de lecture en anglais
Tu lis la section : "Random Number and Randomize Statement"
"garnote" <garnote3RIEN@videotron.ca> a écrit dans le message de groupe de discussion :
eXjsoJyqJHA.5456@TK2MSFTNGP02.phx.gbl...
Bonjour, Bonjour et Merci, Merci,
Cette macro génère n nombres entiers différents
choisis au hasard entre a et b (bornes incluses).
bi : nom de la cellule contenant a
bs : nom de la cellule contenant b
nombre : nom de la cellule contenant n
Dans cette macro, j'utilse Rnd().
Je pourrais changer Rnd pour Rnd() ou ajouter
Randomize juste avant v = Int((b - a + 1) * Rnd() + a)
Quatre scénarios :
1) Rnd sans Randomize
2) Rnd et Randomize
3) Rnd() sans Randomize
4) Rnd() et Randomize
Question :
Qu'est-ce qui distingue chacun de ces scénarios
quant au résultat obtenu ?
Sub HasardSansDoublons()
a = [bi]
b = [bs]
n = [nombre]
If n > b - a + 1 Then
MsgBox Prompt:="Il faut que n soit plus petit que " & b - a + 2 & ".",
Title:=" Impossible !"
Exit Sub
End If
[a3:a65536].ClearContents
Set dico = CreateObject("Scripting.Dictionary")
Do Until i = n
v = Int((b - a + 1) * Rnd() + a)
If Not dico.Exists(v) Then
dico.Add v, v
i = i + 1
End If
Loop
[a4].Resize(i) = Application.Transpose(dico.items)
End Sub
Maintenant que tu as lu le cours 101 sur Rnd et randomize avec petit exemple ;-)
Tu dois te reporter à l'aide d'excel :
Rnd(number) La valeur de l'argument "number" définit le mode de génération adopté par Rnd :
Quelle que soit la valeur initiale indiquée, la même série de nombres aléatoires est générée à chaque appel de la fonction Rnd, car cette dernière réutilise le nombre aléatoire précédent comme valeur initiale pour le calcul du nombre suivant.
En conséquence : Randomize utilise l'argument "number" pour initialiser le générateur de nombres aléatoires de la fonction Rnd en lui donnant une nouvelle valeur initiale. Si l'argument number est omis, la valeur renvoyée par l'horloge système sert de valeur initiale.
L'argument number pourrait bien être défini par une fonction de ton application !
Le choix de la méthode dépend de ce que l'utilisateur a besoin pour mélanger les cartes ;-)
"MichDenis" a écrit dans le message de groupe de discussion :
Une tite adresse et un peu de lecture en anglais
Tu lis la section : "Random Number and Randomize Statement"
"garnote" a écrit dans le message de groupe de discussion :
Bonjour, Bonjour et Merci, Merci,
Cette macro génère n nombres entiers différents choisis au hasard entre a et b (bornes incluses). bi : nom de la cellule contenant a bs : nom de la cellule contenant b nombre : nom de la cellule contenant n Dans cette macro, j'utilse Rnd(). Je pourrais changer Rnd pour Rnd() ou ajouter Randomize juste avant v = Int((b - a + 1) * Rnd() + a) Quatre scénarios : 1) Rnd sans Randomize 2) Rnd et Randomize 3) Rnd() sans Randomize 4) Rnd() et Randomize
Question : Qu'est-ce qui distingue chacun de ces scénarios quant au résultat obtenu ?
Sub HasardSansDoublons() a = [bi] b = [bs] n = [nombre] If n > b - a + 1 Then MsgBox Prompt:="Il faut que n soit plus petit que " & b - a + 2 & ".", Title:=" Impossible !" Exit Sub End If [a3:a65536].ClearContents Set dico = CreateObject("Scripting.Dictionary") Do Until i = n v = Int((b - a + 1) * Rnd() + a) If Not dico.Exists(v) Then dico.Add v, v i = i + 1 End If Loop [a4].Resize(i) = Application.Transpose(dico.items) End Sub
Serge
garnote
Alors Ô maître ceinture noire 9 ième dan Excel, ai-je bien compris ton enseignement ? ;-)
Maintenant que tu as lu le cours 101 sur Rnd et randomize avec petit exemple ;-)
Tu dois te reporter à l'aide d'excel :
Rnd(number) La valeur de l'argument "number" définit le mode de génération adopté par Rnd :
Quelle que soit la valeur initiale indiquée, la même série de nombres aléatoires est générée à chaque appel de la fonction Rnd, car cette dernière réutilise le nombre aléatoire précédent comme valeur initiale pour le calcul du nombre suivant.
En conséquence : Randomize utilise l'argument "number" pour initialiser le générateur de nombres aléatoires de la fonction Rnd en lui donnant une nouvelle valeur initiale. Si l'argument number est omis, la valeur renvoyée par l'horloge système sert de valeur initiale.
L'argument number pourrait bien être défini par une fonction de ton application !
Le choix de la méthode dépend de ce que l'utilisateur a besoin pour mélanger les cartes ;-)
"MichDenis" a écrit dans le message de groupe de discussion :
Une tite adresse et un peu de lecture en anglais
Tu lis la section : "Random Number and Randomize Statement"
"garnote" a écrit dans le message de groupe de discussion :
Bonjour, Bonjour et Merci, Merci,
Cette macro génère n nombres entiers différents choisis au hasard entre a et b (bornes incluses). bi : nom de la cellule contenant a bs : nom de la cellule contenant b nombre : nom de la cellule contenant n Dans cette macro, j'utilse Rnd(). Je pourrais changer Rnd pour Rnd() ou ajouter Randomize juste avant v = Int((b - a + 1) * Rnd() + a) Quatre scénarios : 1) Rnd sans Randomize 2) Rnd et Randomize 3) Rnd() sans Randomize 4) Rnd() et Randomize
Question : Qu'est-ce qui distingue chacun de ces scénarios quant au résultat obtenu ?
Sub HasardSansDoublons() a = [bi] b = [bs] n = [nombre] If n > b - a + 1 Then MsgBox Prompt:="Il faut que n soit plus petit que " & b - a + 2 & ".", Title:=" Impossible !" Exit Sub End If [a3:a65536].ClearContents Set dico = CreateObject("Scripting.Dictionary") Do Until i = n v = Int((b - a + 1) * Rnd() + a) If Not dico.Exists(v) Then dico.Add v, v i = i + 1 End If Loop [a4].Resize(i) = Application.Transpose(dico.items) End Sub
Serge
Alors Ô maître ceinture noire 9 ième dan Excel,
ai-je bien compris ton enseignement ? ;-)
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news: E95DFC64-B362-4D93-BF50-306D6BB96AE5@microsoft.com...
Maintenant que tu as lu le cours 101 sur Rnd et randomize avec petit exemple ;-)
Tu dois te reporter à l'aide d'excel :
Rnd(number)
La valeur de l'argument "number" définit le mode de génération adopté par Rnd :
Quelle que soit la valeur initiale indiquée, la même série de nombres aléatoires est
générée à chaque appel de la fonction Rnd, car cette dernière réutilise le nombre
aléatoire précédent comme valeur initiale pour le calcul du nombre suivant.
En conséquence :
Randomize utilise l'argument "number" pour initialiser le générateur de nombres aléatoires
de la fonction Rnd en lui donnant une nouvelle valeur initiale. Si l'argument number est
omis, la valeur renvoyée par l'horloge système sert de valeur initiale.
L'argument number pourrait bien être défini par une fonction de ton application !
Le choix de la méthode dépend de ce que l'utilisateur a besoin pour mélanger les cartes
;-)
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de groupe de discussion :
DC5E58B9-9FC2-4A68-874A-B7CB2E889148@microsoft.com...
Une tite adresse et un peu de lecture en anglais
Tu lis la section : "Random Number and Randomize Statement"
"garnote" <garnote3RIEN@videotron.ca> a écrit dans le message de groupe de discussion :
eXjsoJyqJHA.5456@TK2MSFTNGP02.phx.gbl...
Bonjour, Bonjour et Merci, Merci,
Cette macro génère n nombres entiers différents
choisis au hasard entre a et b (bornes incluses).
bi : nom de la cellule contenant a
bs : nom de la cellule contenant b
nombre : nom de la cellule contenant n
Dans cette macro, j'utilse Rnd().
Je pourrais changer Rnd pour Rnd() ou ajouter
Randomize juste avant v = Int((b - a + 1) * Rnd() + a)
Quatre scénarios :
1) Rnd sans Randomize
2) Rnd et Randomize
3) Rnd() sans Randomize
4) Rnd() et Randomize
Question :
Qu'est-ce qui distingue chacun de ces scénarios
quant au résultat obtenu ?
Sub HasardSansDoublons()
a = [bi]
b = [bs]
n = [nombre]
If n > b - a + 1 Then
MsgBox Prompt:="Il faut que n soit plus petit que " & b - a + 2 & ".",
Title:=" Impossible !"
Exit Sub
End If
[a3:a65536].ClearContents
Set dico = CreateObject("Scripting.Dictionary")
Do Until i = n
v = Int((b - a + 1) * Rnd() + a)
If Not dico.Exists(v) Then
dico.Add v, v
i = i + 1
End If
Loop
[a4].Resize(i) = Application.Transpose(dico.items)
End Sub
Maintenant que tu as lu le cours 101 sur Rnd et randomize avec petit exemple ;-)
Tu dois te reporter à l'aide d'excel :
Rnd(number) La valeur de l'argument "number" définit le mode de génération adopté par Rnd :
Quelle que soit la valeur initiale indiquée, la même série de nombres aléatoires est générée à chaque appel de la fonction Rnd, car cette dernière réutilise le nombre aléatoire précédent comme valeur initiale pour le calcul du nombre suivant.
En conséquence : Randomize utilise l'argument "number" pour initialiser le générateur de nombres aléatoires de la fonction Rnd en lui donnant une nouvelle valeur initiale. Si l'argument number est omis, la valeur renvoyée par l'horloge système sert de valeur initiale.
L'argument number pourrait bien être défini par une fonction de ton application !
Le choix de la méthode dépend de ce que l'utilisateur a besoin pour mélanger les cartes ;-)
"MichDenis" a écrit dans le message de groupe de discussion :
Une tite adresse et un peu de lecture en anglais
Tu lis la section : "Random Number and Randomize Statement"
"garnote" a écrit dans le message de groupe de discussion :
Bonjour, Bonjour et Merci, Merci,
Cette macro génère n nombres entiers différents choisis au hasard entre a et b (bornes incluses). bi : nom de la cellule contenant a bs : nom de la cellule contenant b nombre : nom de la cellule contenant n Dans cette macro, j'utilse Rnd(). Je pourrais changer Rnd pour Rnd() ou ajouter Randomize juste avant v = Int((b - a + 1) * Rnd() + a) Quatre scénarios : 1) Rnd sans Randomize 2) Rnd et Randomize 3) Rnd() sans Randomize 4) Rnd() et Randomize
Question : Qu'est-ce qui distingue chacun de ces scénarios quant au résultat obtenu ?
Sub HasardSansDoublons() a = [bi] b = [bs] n = [nombre] If n > b - a + 1 Then MsgBox Prompt:="Il faut que n soit plus petit que " & b - a + 2 & ".", Title:=" Impossible !" Exit Sub End If [a3:a65536].ClearContents Set dico = CreateObject("Scripting.Dictionary") Do Until i = n v = Int((b - a + 1) * Rnd() + a) If Not dico.Exists(v) Then dico.Add v, v i = i + 1 End If Loop [a4].Resize(i) = Application.Transpose(dico.items) End Sub
Serge
michdenis
À savoir si on doit utiliser Rnd, Rnd(Number) ou Randomize, cela dépend de l'utilité et de la nécessité de définir la notion de hasard dans la suite des numéros des tirages obtenus.
Si tu dirigeais une maison de loterie, il y aurait de forte chance que quelqu'un découvre rapidement l'algorithme utilisée qu'utilise Rnd. En conséquence, comme le résultat serait prévisible, on ne peut plus parler de hasard ... et "tous" pourrait prédire le résultat du tirage...La question, dans quelle mesure avons nous besoin d'utiliser une série émanant de la "pure chance (hasard)" dans la problématique que l'on tente de résoudre ? Ce à quoi la notion de randomize tente de répondre.
À savoir si on doit utiliser Rnd, Rnd(Number) ou Randomize,
cela dépend de l'utilité et de la nécessité de définir la notion
de hasard dans la suite des numéros des tirages obtenus.
Si tu dirigeais une maison de loterie, il y aurait de forte chance
que quelqu'un découvre rapidement l'algorithme utilisée qu'utilise Rnd.
En conséquence, comme le résultat serait prévisible, on ne peut
plus parler de hasard ... et "tous" pourrait prédire le résultat du
tirage...La question, dans quelle mesure avons nous besoin
d'utiliser une série émanant de la "pure chance (hasard)" dans la
problématique que l'on tente de résoudre ? Ce à quoi la notion
de randomize tente de répondre.
À savoir si on doit utiliser Rnd, Rnd(Number) ou Randomize, cela dépend de l'utilité et de la nécessité de définir la notion de hasard dans la suite des numéros des tirages obtenus.
Si tu dirigeais une maison de loterie, il y aurait de forte chance que quelqu'un découvre rapidement l'algorithme utilisée qu'utilise Rnd. En conséquence, comme le résultat serait prévisible, on ne peut plus parler de hasard ... et "tous" pourrait prédire le résultat du tirage...La question, dans quelle mesure avons nous besoin d'utiliser une série émanant de la "pure chance (hasard)" dans la problématique que l'on tente de résoudre ? Ce à quoi la notion de randomize tente de répondre.
Modeste
Bonsour® michdenis avec ferveur ;o))) vous nous disiez :
À savoir si on doit utiliser Rnd, Rnd(Number) ou Randomize, cela dépend de l'utilité et de la nécessité de définir la notion de hasard dans la suite des numéros des tirages obtenus.
Si tu dirigeais une maison de loterie, il y aurait de forte chance que quelqu'un découvre rapidement l'algorithme utilisée qu'utilise Rnd. En conséquence, comme le résultat serait prévisible, on ne peut plus parler de hasard ... et "tous" pourrait prédire le résultat du tirage...La question, dans quelle mesure avons nous besoin d'utiliser une série émanant de la "pure chance (hasard)" dans la problématique que l'on tente de résoudre ? Ce à quoi la notion de randomize tente de répondre.
;o))) de façon mathématique ou programme informatique, le hasard pur n'existe pas
j'ajouterai pour etre plus explicite selon l'aide en ligne, la fonction Rnd (sans argument) adopte le même nombre comme valeur initiale la première fois qu'elle est appelée. Lors des appels ultérieurs, elle réutilise le dernier nombre généré comme valeur initiale. exemple :
soit la Proc '***************** Sub testalea() For i = 1 To 30 Cells(i, 1) = Rnd() Next End Sub '************ lancer UNE fois la proc selectionner les valeurs obtenues, faire un copier collage spécial valeurs en colonne 4 effacer la colonne A fermer le classeur
réouvrir le classeur re-exécuter la proc on constate l'affichage de valeurs identiques au tirage précédent
si l'on lance x fois la proc que l'on ferme, puis réouvre le classeur il suffira de lancer x fois la proc pour retrouver les valeurs précédentes
l'utilisation de randomize permet de s'affranchir de cette répétitivité...
mais on veut parfois obtenir des tirages aléatoires consécutifs identiques il faut alors appeler la fonction Rnd() avec un parametre négatif ET utiliser le parametre de Randomize
'*************** Sub testalea2() xxx = Rnd(-1) For j = 1 To 6 Randomize (j) For i = 1 To 20 Cells(i, j) = Rnd() Next Next End Sub '****************
Bonsour® michdenis avec ferveur ;o))) vous nous disiez :
À savoir si on doit utiliser Rnd, Rnd(Number) ou Randomize,
cela dépend de l'utilité et de la nécessité de définir la notion
de hasard dans la suite des numéros des tirages obtenus.
Si tu dirigeais une maison de loterie, il y aurait de forte chance
que quelqu'un découvre rapidement l'algorithme utilisée qu'utilise
Rnd. En conséquence, comme le résultat serait prévisible, on ne peut
plus parler de hasard ... et "tous" pourrait prédire le résultat du
tirage...La question, dans quelle mesure avons nous besoin
d'utiliser une série émanant de la "pure chance (hasard)" dans la
problématique que l'on tente de résoudre ? Ce à quoi la notion
de randomize tente de répondre.
;o))) de façon mathématique ou programme informatique, le hasard pur n'existe pas
j'ajouterai pour etre plus explicite
selon l'aide en ligne,
la fonction Rnd (sans argument) adopte le même nombre comme valeur initiale la première fois qu'elle est appelée.
Lors des appels ultérieurs, elle réutilise le dernier nombre généré comme valeur initiale.
exemple :
soit la Proc
'*****************
Sub testalea()
For i = 1 To 30
Cells(i, 1) = Rnd()
Next
End Sub
'************
lancer UNE fois la proc
selectionner les valeurs obtenues,
faire un copier collage spécial valeurs en colonne 4
effacer la colonne A
fermer le classeur
réouvrir le classeur
re-exécuter la proc
on constate l'affichage de valeurs identiques au tirage précédent
si l'on lance x fois la proc
que l'on ferme, puis réouvre le classeur
il suffira de lancer x fois la proc pour retrouver les valeurs précédentes
l'utilisation de randomize permet de s'affranchir de cette répétitivité...
mais on veut parfois obtenir des tirages aléatoires consécutifs identiques
il faut alors
appeler la fonction Rnd() avec un parametre négatif
ET utiliser le parametre de Randomize
'***************
Sub testalea2()
xxx = Rnd(-1)
For j = 1 To 6
Randomize (j)
For i = 1 To 20
Cells(i, j) = Rnd()
Next
Next
End Sub
'****************
Bonsour® michdenis avec ferveur ;o))) vous nous disiez :
À savoir si on doit utiliser Rnd, Rnd(Number) ou Randomize, cela dépend de l'utilité et de la nécessité de définir la notion de hasard dans la suite des numéros des tirages obtenus.
Si tu dirigeais une maison de loterie, il y aurait de forte chance que quelqu'un découvre rapidement l'algorithme utilisée qu'utilise Rnd. En conséquence, comme le résultat serait prévisible, on ne peut plus parler de hasard ... et "tous" pourrait prédire le résultat du tirage...La question, dans quelle mesure avons nous besoin d'utiliser une série émanant de la "pure chance (hasard)" dans la problématique que l'on tente de résoudre ? Ce à quoi la notion de randomize tente de répondre.
;o))) de façon mathématique ou programme informatique, le hasard pur n'existe pas
j'ajouterai pour etre plus explicite selon l'aide en ligne, la fonction Rnd (sans argument) adopte le même nombre comme valeur initiale la première fois qu'elle est appelée. Lors des appels ultérieurs, elle réutilise le dernier nombre généré comme valeur initiale. exemple :
soit la Proc '***************** Sub testalea() For i = 1 To 30 Cells(i, 1) = Rnd() Next End Sub '************ lancer UNE fois la proc selectionner les valeurs obtenues, faire un copier collage spécial valeurs en colonne 4 effacer la colonne A fermer le classeur
réouvrir le classeur re-exécuter la proc on constate l'affichage de valeurs identiques au tirage précédent
si l'on lance x fois la proc que l'on ferme, puis réouvre le classeur il suffira de lancer x fois la proc pour retrouver les valeurs précédentes
l'utilisation de randomize permet de s'affranchir de cette répétitivité...
mais on veut parfois obtenir des tirages aléatoires consécutifs identiques il faut alors appeler la fonction Rnd() avec un parametre négatif ET utiliser le parametre de Randomize
'*************** Sub testalea2() xxx = Rnd(-1) For j = 1 To 6 Randomize (j) For i = 1 To 20 Cells(i, j) = Rnd() Next Next End Sub '****************