La notion d'aleatoire sous LOD

M

may²

Invité
voilà que mes croyances en des petits lutins qui tirent des jetons dans un sac pour décider de ce que Meph va me dropper tombe en ruine :D
 
U

ulmo

Invité
De multiples seeds ? Comment sont-elles utilisées alors ?
Tel que je l'ai compris :
Au lancement du jeu, création de seed(PtGame), puis d'elle sont dérivées seed(monstre), seed(objets), seed(missiles), ...
Ensuite, si on a besoin d'un nombre aléatoire, on utilise la seed adaptée, et donc en pratique la seed(PtGame) n'est utilisée que au tout début pour créer les autres seeds.
C'est ça ?

Ensuite deux remarques :
Le terme de "seed" est en général réservé à la valeur initiale qu'il faut choisir avec soin, on "plante" une suite aléatoire qui est déterminée par son premier terme.

Vous pouvez également utilisé cette génération de seed pour un tirage aléatoire entre 0 et X:

4. Diviser la seed_low par X

5. la retenue est la valeur aléatoire comprise entre 0 et (X-1) le tout en hexa

Bref en math RND[x] = SeedLo mod X
Pour la variante, la version usuelle en fait (seed=a*seed+b[mod 2^32] au lieu de a*seed+seed>>32), il est souvent dit (et vérifié) que les derniers bits ne sont pas vraiment aléatoires. Par conséquent il est largement préférable de faire : floor(SeedLo*X/2^32).
Par exemple, pour faire du pile ou face, on regardera le bit de poid fort et pas celui de poid faible.

Peux-tu (re)confirmer cette façon d'obtenir un entier entre 0 et X-1 STP ?
 
M

Myrdinn

Invité
Provient du message de Ulmo
De multiples seeds ? Comment sont-elles utilisées alors ?
Tel que je l'ai compris :
Au lancement du jeu, création de seed(PtGame), puis d'elle sont dérivées seed(monstre), seed(objets), seed(missiles), ...
Ensuite, si on a besoin d'un nombre aléatoire, on utilise la seed adaptée, et donc en pratique la seed(PtGame) n'est utilisée que au tout début pour créer les autres seeds.
C'est ça ?

Oui et Non
LE PtGame est le sommet hierarchique et gère la partie du début à la fin.
Bref tout nouveau monstres, nouvel objet droppé (et donc créé) ... obtient une seed dérivé de la seed actuelle du PtGame.

Ensuite deux remarques :
Le terme de "seed" est en général réservé à la valeur initiale qu'il faut choisir avec soin, on "plante" une suite aléatoire qui est déterminée par son premier terme.
Je ne fais qu'utiliser les termes des programmeurs. Je parle d'update de la seed car elle est utilisée pour créé d'autre seed dans le cas du PtGame.

Pour la variante, la version usuelle en fait (seed=a*seed+b[mod 2^32] au lieu de a*seed+seed>>32), il est souvent dit (et vérifié) que les derniers bits ne sont pas vraiment aléatoires. Par conséquent il est largement préférable de faire : floor(SeedLo*X/2^32).
Par exemple, pour faire du pile ou face, on regardera le bit de poid fort et pas celui de poid faible.

Peux-tu (re)confirmer cette façon d'obtenir un entier entre 0 et X-1 STP ?
Je n'ai pas le niveau nécessaire en stat pour dire si c'est suffisamment aléatoire ou non. A priori c'est comme je le décrit ( En faite la routine n'est pas de blizzard, je pense que tu pourras la trouver sur le net. Ce que je décrit est ce que j'ai compris en lisant le code à partir des infos qui m'ont été données par Jarulf. )
 
U

ulmo

Invité
Provient du message de Myrdinn
Oui et Non
LE PtGame est le sommet hierarchique et gère la partie du début à la fin.
Bref tout nouveau monstres, nouvel objet droppé (et donc créé) ... obtient une seed dérivé de la seed actuelle du PtGame.
OK, j'ai compris.


Je ne fais qu'utiliser les termes des programmeurs. Je parle d'update de la seed car elle est utilisée pour créé d'autre seed dans le cas du PtGame.
Tout le monde dit déjà comme ça, alors tant pis. Si tu avais choisi ce terme, j'aurais encore pu militer pour une autre terminologie, mais là c'est trop tard !


Je n'ai pas le niveau nécessaire en stat pour dire si c'est suffisamment aléatoire ou non. A priori c'est comme je le décrit ( En faite la routine n'est pas de blizzard, je pense que tu pourras la trouver sur le net. Ce que je décrit est ce que j'ai compris en lisant le code à partir des infos qui m'ont été données par Jarulf. )
Ma question porte uniquement sur l'algo utilisé, par sur son efficacité. Et justement, elle diffère de ce que je trouve habituellement (ajouter seed_high au lieu d'une constante). Donc je me demandais...
 
M

Myrdinn

Invité
J'ai testé la routine gràce à un petit programme de Jarulf qui mime les tirages aléatoires et les séries issues de la graine initiale ;)
(Je suis le premier à apprécier que l'on utilise les terminologie correctement, malheureusement ma nature d'autodidacte fait que je ne maitrise jamais les nomenclatures avant que l'on me les explique :D J'apprécie à sa juste valeur ta remarque sur les seeds ;)

Après plusieurs essais la répartition est vraiment aléatoire et pseudo uniforme.


J'ai repensé à ta phrase il est souvent dit (et vérifié) que les derniers bits ne sont pas vraiment aléatoires, je dirais que ce n'est pas valable pour la métahode choisie par Blizzard (Encore une fois ce n'est pas une invention de blizzard, on trouve cette méthode ailleurs) , a moins que tu ne puisses me prouver le contraire.

Les bits faibles se voient ajouter les bits forts du tirage précédent.
Même si ces bits faibles sont peu aéatoires(selon ta phrase) le fait d'y ajouter un partie très aléatoire (Le seed_high , toujours suivant la même phrase) fait du résultat une partie vraiment aléatoire non ?? Donc le problème ne se poserait pas ici
 
M

MacPassion

Invité
Provient du message de Myrdinn
Bref, l'aléatoire ne tient compte d'aucune de vos actions, et les recettes de grand mère pour le Meme Runs, j'y crois de moins en moins :lol:

Ha bon ? Pour prendre l'exemple du déplacement aléatoire des barbares non merco (Ceux qui se baladent un peu partout et très vite tuer), si on leur bloque le passage en se mettant devant eux, ils iront ailleurs, non ?
Un exemple encore plus banal : les monstres ne bougent pas si l'on n'est pas assez proche d'eux (aucun aléatoire ici, ils ne bougent pas point barre). Si on s'approche, en quelques sorte leur IA s'activera et l'aléatoire rentrera en jeu. Et réciproquement si l'on s'éloigne d'eux...
En bref, que l'on soit ou pas dans le jeu ( :D ) change tout (re :D ) :rolleyes:
 
U

ulmo

Invité
Il parle du comportement supersticieux du type "parler à Ormus avant d'aller voir Mephisto", "Tuer tout les monstres normaux et aucun boss"(comme si un bonus de drop pour boss s'accumulait au cours du temps), ...
 
B

bufobufo

Invité
Franchement, je ne comprends strictement rien mais rien à toutes ces notions informatico-techniques de la notion d'aléatoire mais ma question, sans doute simpliste, est la suivante :
la notion d'aléatoire est-elle en quoi que ce soit liée à la machine personnelle du joueur (carte-mère, processeur...) ?
Je suis en effet étonné du fait que lorsque je joue (en solo) à LoD, je tombe sytématiquement d'une partie à l'autre sur les même catégories d'objets. La dernière partie : je suis tombé sur 10 lames de poignets, 6 casques de faucon, des lances en tous genres... Par contre pas un sceptre, pas un gant...
Ce qui veut dire qu'à chaque drop, l'aléatoire ne se fait pas sur tous les objets existant du jeu : comment expliquer que certaines catégories d'objets (tel type de casque, tel type d'arme...) reviennent systématiquement ? Et qu'à la partie suivante, au même endroit, on passe à d'autres catégories d'objets du même type ? Est-ce le même système que le choix aléatoire des monstres d'une partie à l'autre ?
J'avoue que tout cela m'interpelle...:confused:
 
M

MacPassion

Invité
Euh... ça m'est déjà arrivé, mais ca dépend aussi d'où tu es ;)
 
H

hogun the grim

Invité
Hello!

Je viens de relire le post pour pouvoir conforter mes observations avec ce que je subodore en programmation derrière.

Les observations :
En solo, dans un même jeu depuis plusieurs mois pour un personnage qui ne fait que du Meph run, sur les 2 racks d'armes chez Meph j'ai observé que :
- celui de gauche donne à 99,9% (au cas où je ne me serais pas souvenu d'une fois où j'ai dropé une arme) des pièces d'équipement
- il y a une sur-représentation des boucliers paladin et boucliers nécromanciens
- celui de droite donne à 99,9% des armes
- il y a une sur-représentation des épées mystérieuses et masse renforcées et cestus de bataille dans une moindre mesure.
Quand je parle de sur-représentation c'est de l'ordre de 8/10. Par contre les caractéristiques (niveau, rare/magique/blanc/gris) n'est pas uniforme.
Je n'ai pas été jusqu'à contrôler les ordres d'apparition :lol:
Je n'ai pas trouvé de "déterminisme" équivalent pour les coffres par exemple.


Les hypothèses :
Sachant que les seeds du jeu et de la map ne changent pas, sur ce type d'objet (le rack) il y aurait une détermination sur le type d'objet (pièce d'armure ou arme), sur le type d'objet par classe, le tirage aléatoire ne se faisant que sur les caractéristiques de l'objet.

L'étude du code vérifie-t'il ceci ?

Cordialement
 
M

Myrdinn

Invité
Lut' Hogun

Il existe 2 types de rack, je ne connais pas les noms en français mais ils devraient être aussi explicite qu'en anglais:
[*]Weapon Rack --> Ne donne que des armes
[*]Armor Rack --> Ne donne que des pièces d'armures (ou d'équipement pour reprendre ta terminologie)

Jusque la rien d'extraoridnaire, d'ailleurs c'est valable pour tous les rateliers?(Rack :D )du jeu

Ensuite je n'ai plus le determinisme en tête mais je crois me souvenir que c'est lié à la propriété mettalique et au QLVL ce qui fait que le résultat du tirage n'a rien d'équiprobable pour chaque objet. Dans ces conditions il ne me semble pas abhérent qu'il y ait sur représentation de certaines Armes ou armures suivant le cas.

Ce qui me rassure c'est que les proriétés sont bien aléatoires ensuite, ca prouve que le système de Seed de D2 n'est pas si mauvais.

Bref oui, je ne sais pas si ca confirme ou non le code c'est un echantillon trop petit et pas assez explicite, mais ca ne contredit pas ce que j'ai compris du code du jeu :)
 
J

Joel

Invité
les racks sont codés pour ne dropepr que des objets 'metalliques' (bifield 3+). Ensuite, un bug les empeche d'utiliser tt les items (ils s'arrente aux 128 premiers).
 
H

hogun the grim

Invité
Hello!

Merci pour les réponses.

Je n'avais même pas fait attention au fait qu'ils portaient des noms différents :pt1cable:

Pour le bug c'est bon à savoir et même si l'échantillon était trop petit la limitation à 7 bits est quand même observable ;)

Il me semble toutefois avoir lu quelque part que la seed des objets étaient recalculées (ou alors j'ai mal compris). Or apparemment en solo ce n'est pas le cas pour les racks.

Cordialement
 
Haut