Excel & 1d100 Sans Limite
le Glauque
Messages postés
66
Statut
Membre
-
Anonyme -
Anonyme -
Bonjour à tous,
J’aimerai savoir s’il est possible de simuler dans une cellule le tirage d’un dé à 100 faces (d100) Sans Limite.
« Mais qu’est-ce donc que cela ?!..., vous interloquerez vous »
Et bien, il s’agit de tirer au hasard un nombre de 1 à 100. Jusqu’ici, rien de trop compliqué.
Mais deux alternatives peuvent se produire :
- Si ce nombre est compris entre 1 et 5, on retire à nouveau 1d100 et on l’ôte à ce résultat.
- Si le nombre est compris entre 96 et 100, on retire à nouveau 1d100 et on l’ajoute à ce résultat.
Tout en sachant que cela peut se cumuler.
Des exemples ? Mais bien sûr :
Ex A :
1er jet : 99
Je relance le dé pour y ajouter son résultat : 26.
On s’arrête là pour un total de 99+26 = 125
Ex B :
1er Jet : 01
Je relance le dé pour en retrancher le résultat : 76
On s’arrête là pour un total de : 01-76 = -75
Ex C :
1er Jet : 98
Je relance le dé pour y ajouter son résultat : 96
Je relance le dé pour y ajouter son résultat : 64.
On s’arrête là pour un total de 98+96+64 = 258
Ex D :
1er Jet : 04
Je relance le dé pour en retrancher le résultat : 96
Je relance le dé pour en retrancher le résultat : 02
Je relance le dé pour y ajouter le résultat : 65
On s’arrête là pour un total de : 04-96-02+65 = -29
Voilà…
Bon, ensuite, on peut créer des nuances, avec des jets d’1d100 Sans Limite Supérieure, où la relance ne se fait que sur un 96-100.
L’idée étant de pouvoir une liste d’individus qui ont besoin de faire un jet à chaque tour.
Ainsi, en appuyant sur un bouton, par exemple, je peux assigner un résultat de jet à 20 personnes (qui apparaît dans une case à côté de leur nom), au lieu de faire tous les jets des protagonistes.
Merci d’avance,
Le Glauque
J’aimerai savoir s’il est possible de simuler dans une cellule le tirage d’un dé à 100 faces (d100) Sans Limite.
« Mais qu’est-ce donc que cela ?!..., vous interloquerez vous »
Et bien, il s’agit de tirer au hasard un nombre de 1 à 100. Jusqu’ici, rien de trop compliqué.
Mais deux alternatives peuvent se produire :
- Si ce nombre est compris entre 1 et 5, on retire à nouveau 1d100 et on l’ôte à ce résultat.
- Si le nombre est compris entre 96 et 100, on retire à nouveau 1d100 et on l’ajoute à ce résultat.
Tout en sachant que cela peut se cumuler.
Des exemples ? Mais bien sûr :
Ex A :
1er jet : 99
Je relance le dé pour y ajouter son résultat : 26.
On s’arrête là pour un total de 99+26 = 125
Ex B :
1er Jet : 01
Je relance le dé pour en retrancher le résultat : 76
On s’arrête là pour un total de : 01-76 = -75
Ex C :
1er Jet : 98
Je relance le dé pour y ajouter son résultat : 96
Je relance le dé pour y ajouter son résultat : 64.
On s’arrête là pour un total de 98+96+64 = 258
Ex D :
1er Jet : 04
Je relance le dé pour en retrancher le résultat : 96
Je relance le dé pour en retrancher le résultat : 02
Je relance le dé pour y ajouter le résultat : 65
On s’arrête là pour un total de : 04-96-02+65 = -29
Voilà…
Bon, ensuite, on peut créer des nuances, avec des jets d’1d100 Sans Limite Supérieure, où la relance ne se fait que sur un 96-100.
L’idée étant de pouvoir une liste d’individus qui ont besoin de faire un jet à chaque tour.
Ainsi, en appuyant sur un bouton, par exemple, je peux assigner un résultat de jet à 20 personnes (qui apparaît dans une case à côté de leur nom), au lieu de faire tous les jets des protagonistes.
Merci d’avance,
Le Glauque
A voir également:
- Excel & 1d100 Sans Limite
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
8 réponses
Curieux et intéressant, comme défi !
Le gros problème, avec la génération de nombres aléatoires, c'est que le résultat change chaque fois qu'Excel relance un calcul, n'importe où dans la feuille ! C'est à dire quasiment à chaque appui sur une touche du clavier ...
Alors, avant que je ne me plonge dans l'étude approfondie de ton exercice, commence par me dire si tu es d'accord avec le principe de jeu suivant :
* une cellule particulière est dédiée au lancement du dé ;
* c'est toi (ou le joueur) qui saisis le nombre dans la case appropriée (dès la saisie validée, l'affichage du dé aura déjà changé !) ;
* il y a donc un risque certain de tricherie, puisqu'il n'est pas possible à Excel de mémoriser le résultat et de vérifier l'exactitude de la saisie manuelle !
Si tu peux tolérer ces restrictions, je continuerai à réfléchir à ton jeu.
Le gros problème, avec la génération de nombres aléatoires, c'est que le résultat change chaque fois qu'Excel relance un calcul, n'importe où dans la feuille ! C'est à dire quasiment à chaque appui sur une touche du clavier ...
Alors, avant que je ne me plonge dans l'étude approfondie de ton exercice, commence par me dire si tu es d'accord avec le principe de jeu suivant :
* une cellule particulière est dédiée au lancement du dé ;
* c'est toi (ou le joueur) qui saisis le nombre dans la case appropriée (dès la saisie validée, l'affichage du dé aura déjà changé !) ;
* il y a donc un risque certain de tricherie, puisqu'il n'est pas possible à Excel de mémoriser le résultat et de vérifier l'exactitude de la saisie manuelle !
Si tu peux tolérer ces restrictions, je continuerai à réfléchir à ton jeu.
Bonjour
Idée à suivre :
- 1 case à cocher : Cochée = calcul / Décochée = Arrêt calcul
- 1 cellule avec une formule **ALEA()** liée la case à cocher et à l'autre cellule
- 1 cellule mémoire avec le résultat de l'autre cellule quand la case n'est pas cochée
Activez les fonctions d'itérations !
Pourquoi ne pas utiliser une fonction / une macro afin de pouvoir mémoriser ?
Générer un nombre aléatoire
XlWiki:GenererNombreAleatoire
http://xlwiki.free.fr/wiki/wakka.php?wiki=GenererNombreAleatoire
La formule ALEA()
Syntaxe : =ALEA()
La formule ALEA.ENTRE.BORNES()
Syntaxe : =ALEA.ENTRE.BORNES(Minimum;Maximum)
Syntaxe : =Minimum+ENT((Maximum-Minimum+1)*ALEA())
Générer un nombre entre a et b (inclus) par pas de k
Syntaxe : =ENT(((b-a)/k+1)*ALEA())*k+a
Syntaxe : =ENT(((10-1)/0,5+1)*ALEA())*0,5+1
Simulation d'une loi normale
* Avec LOI.NORMALE.INVERSE()
Syntaxe : =LOI.NORMALE.INVERSE(ALEA();m;sigma)
* Méthode de Box-Müller
Syntaxe : =m+sigma*RACINE(-2*LN(1-ALEA()))*COS(2*PI()*ALEA())
Merci
Idée à suivre :
- 1 case à cocher : Cochée = calcul / Décochée = Arrêt calcul
- 1 cellule avec une formule **ALEA()** liée la case à cocher et à l'autre cellule
- 1 cellule mémoire avec le résultat de l'autre cellule quand la case n'est pas cochée
Activez les fonctions d'itérations !
Pourquoi ne pas utiliser une fonction / une macro afin de pouvoir mémoriser ?
Générer un nombre aléatoire
XlWiki:GenererNombreAleatoire
http://xlwiki.free.fr/wiki/wakka.php?wiki=GenererNombreAleatoire
La formule ALEA()
Syntaxe : =ALEA()
La formule ALEA.ENTRE.BORNES()
Syntaxe : =ALEA.ENTRE.BORNES(Minimum;Maximum)
Syntaxe : =Minimum+ENT((Maximum-Minimum+1)*ALEA())
Générer un nombre entre a et b (inclus) par pas de k
Syntaxe : =ENT(((b-a)/k+1)*ALEA())*k+a
Syntaxe : =ENT(((10-1)/0,5+1)*ALEA())*0,5+1
Simulation d'une loi normale
* Avec LOI.NORMALE.INVERSE()
Syntaxe : =LOI.NORMALE.INVERSE(ALEA();m;sigma)
* Méthode de Box-Müller
Syntaxe : =m+sigma*RACINE(-2*LN(1-ALEA()))*COS(2*PI()*ALEA())
Merci
Bonjour,
Une approche de ton exposé !
Mais il peut arriver qu'il y ai 2 résultats identiques, tester et recommencer un tirage si double !
A+
Une approche de ton exposé !
Sub Tir20()
Sheets("Feuil1").Select
For i = 4 To 24
Cells(i, 2) = TirageD100()
Next i
End Sub
Public Function TirageD100() As Integer
Dim Buff As Integer
Dim Tampon As Integer
Reco:
Select Case Buff
Case 0
Buff = Tire()
Tampon = Buff
GoTo Reco
Case Is > 95
Buff = Tire()
Tampon = Tampon + Buff
GoTo Reco
Case Is < 6
Buff = Tire()
Tampon = Tampon - Buff
GoTo Reco
End Select
TirageD100 = Tampon
End Function
Private Function Tire() As Integer
Tire = Int((100 * Rnd) + 1)
End Function
Mais il peut arriver qu'il y ai 2 résultats identiques, tester et recommencer un tirage si double !
A+
Bonjour
Si ça peut aider :
la fonction ALEA - Excel Downloads Forums :
https://www.excel-downloads.com/threads/la-fonction-alea.43732/
(J'avais perdu le lien il y a 30 minutes environ / 30 minutes que je cherche = donc je le propose;))
Je cite :
Public Function DES(ByRef NB As Range) As Integer
Application.Volatile (False)
Randomize: DES = Int((10 * Rnd) + 1)
End Function
Je cite :
Feuil1!A1 : cellule de référence
En A2 de n'importe quelle feuille : =SI(Feuil1!$A$1=1;ALEA();A2)
formule pouvant être copiée dans n'importe quelle cellule de n'importe quelle feuille (sauf en Feuil1!A1 évidemment !)
Si la cellule Feuil1!A1 contient le chiffre 1, la fonction ALEA() fonctionne.
Dans les autres cas, même si Feuil!1$A$1 est vide, la valeur ne se modifie pas.
****
/!\ Pour éviter le message (d'erreur) de référence circulaire activez les fonctions d'itérations !
Merci
Si ça peut aider :
la fonction ALEA - Excel Downloads Forums :
https://www.excel-downloads.com/threads/la-fonction-alea.43732/
(J'avais perdu le lien il y a 30 minutes environ / 30 minutes que je cherche = donc je le propose;))
Je cite :
Public Function DES(ByRef NB As Range) As Integer
Application.Volatile (False)
Randomize: DES = Int((10 * Rnd) + 1)
End Function
Je cite :
Feuil1!A1 : cellule de référence
En A2 de n'importe quelle feuille : =SI(Feuil1!$A$1=1;ALEA();A2)
formule pouvant être copiée dans n'importe quelle cellule de n'importe quelle feuille (sauf en Feuil1!A1 évidemment !)
Si la cellule Feuil1!A1 contient le chiffre 1, la fonction ALEA() fonctionne.
Dans les autres cas, même si Feuil!1$A$1 est vide, la valeur ne se modifie pas.
****
/!\ Pour éviter le message (d'erreur) de référence circulaire activez les fonctions d'itérations !
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re à tous,
Si faut pas de doublon remplacer Tir20() par
Faut de toute façon ajouter la ligne Randomize Timer sinon c'est toujours la même série.
Si faut pas de doublon remplacer Tir20() par
Sub Tir20_SD()
Dim TB(1 To 20) As Integer
Dim i As Integer, e As Integer, g As Integer
Sheets("Feuil1").Select
Randomize Timer
For i = 1 To 20
reco:
g = TirageD100()
For e = 1 To i - 1
If TB(e) = g Then GoTo reco
Next e
TB(i) = g
Cells(i + 3, 2) = g
Next i
End Sub
Faut de toute façon ajouter la ligne Randomize Timer sinon c'est toujours la même série.
Alors on m'a posté une réponse sur un autre formum qui me convient bien,
J'aurais aimé vs la communiquer par PJ... mais je n'y arrive pas !
MEric encore pour tout !
J'aurais aimé vs la communiquer par PJ... mais je n'y arrive pas !
MEric encore pour tout !
Bonjour
http://www.cijoint.fr/cjlink.php?file=cj200808/cijQOD3uHZ.zip (Source)
La **solution** :
https://www.developpez.net/forums/d597162/logiciels/microsoft-office/excel/jet-limite/
Tu te connectes, t'enregistres ton fichier sur ton pc si tu l'as plus et tu mets le fichier ici.
Et n'oublies pas le lien ! Coches la case 'Rendre public le fichier' ici.
Merci
http://www.cijoint.fr/cjlink.php?file=cj200808/cijQOD3uHZ.zip (Source)
La **solution** :
https://www.developpez.net/forums/d597162/logiciels/microsoft-office/excel/jet-limite/
Tu te connectes, t'enregistres ton fichier sur ton pc si tu l'as plus et tu mets le fichier ici.
Et n'oublies pas le lien ! Coches la case 'Rendre public le fichier' ici.
Merci
Hehehe, merci !...
>Le gros problème, avec la génération de nombres aléatoires, c'est que le résultat change chaque fois qu'Excel relance un calcul, n'importe où dans la feuille ! C'est à dire quasiment à chaque appui sur une touche du clavier ...
Oui, c'est un peu le problème avec la formule ALEA()
>Alors, avant que je ne me plonge dans l'étude approfondie de ton exercice, commence par me dire si tu es d'accord avec le principe de jeu suivant :
D'accord...
>* une cellule particulière est dédiée au lancement du dé ;
Oui. C'est la colonne "Jet".
>* c'est toi (ou le joueur) qui saisis le nombre dans la case appropriée (dès la saisie validée, l'affichage du dé aura déjà changé !) ;
En l'occurrence, c'est le Maître de Jeu qui s'en charge (donc moi ou un autre en fonction des parties).
>* il y a donc un risque certain de tricherie, puisqu'il n'est pas possible à Excel de mémoriser le résultat et de vérifier l'exactitude de la saisie manuelle !
Ca n'est pas vraiment un problème : vu que c'est le Maître de Jau qui a l'ordinateur ss les yeux, il ne trichera pas.
Le soucis, en revanche, c'est que s'il manipule une autre case ds le même doc il ne faut pas que tout soit recalculé.
L'idéal serait qu'il y ait un bouton, sur lequel serait raccorché une macro, ou un truc ds ce genre.
Au début de chaque rd, il n'aurait qu'à appuyer dessus pr faire les jets de ts le monde !
>Si tu peux tolérer ces restrictions, je continuerai à réfléchir à ton jeu.
J'espère que ça te convient...
Pour éclaircir un peu, il est ici question de Jeu de Rôle...
Lors d'un combat, on a besoin de "tirer l'Initiative" des divers protagonistes, pour savoir dans quel ordre ils vont agir.
Ce qui est résolu en 2 secondes et quelques jets de dés lorsqu'il y a 4 combattants devient tout de suite plus long lorsqu'on en arrive à une dizaine.
L'idée est donc d'automatiser tout ça, pour qu'à chaque début de round, je n'ai qu'à cliquer sur un bouton et que les jets se fassent tous seuls.
Ensuite, si je veux "pousser" le truc jusqu'au bout, avec un autre bouton, je les classe automatiquement du plus grand au plus petit, et j'ai mon ordre tout joli sous les yeux (mais ça, crée une macro de tri, je sais faire).
Voilà, tu sais tout !
J'ai crée un doc exemple... mais je ne sais pas comment le joindre à mon post...
Merci pour ta réponse si rapide.