subtilité de rand VG5000

Cette catégorie traite de développements récents destinés à nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Xavier_

Re: subtilité de rand VG5000

Message par Xavier_ »

Tout comme l'explication de ON X GOTO/GOSUB...
Si X=0 X<1 ou X>nb argument, la commande est ignoré.
C'est exactement ce qui est marqué sur le manuel… mais…

Enfin, bref… ils n'auraient pas le faire en anglais, et le traduire en voulant tromper les dyslexiques Français !
C'est petit et mesquin...
Markerror
Messages : 2123
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: subtilité de rand VG5000

Message par Markerror »

Bon, qui refait une version du bouquin ? :-).
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13299
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: subtilité de rand VG5000

Message par Carl »

De mémoire, clefs pour VG5000 contient des erreurs...

Carl
Guillaume
Messages : 46
Inscription : 26 avr. 2020 15:24
Localisation : Nice

Re: subtilité de rand VG5000

Message par Guillaume »

Xavier_ a écrit : 07 mai 2020 01:58 :shock:

Code : Tout sélectionner

 10 FOR i=1 TO 999999
 20 a=RND(1):IF a=0 THEN PRINT i:END
 30 NEXT I
Pareil pour Zéro !
Donc, "compris entre 0 et 1"... ils sont dans les clous.
(exclus 0 et 1 pas compris dedans…)

[comme Carl il a déjà dit]
J'ai eu un zero dans mes essais hier.
Avatar de l’utilisateur
Mokona
Messages : 1042
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: subtilité de rand VG5000

Message par Mokona »

Oui, Clés pour VG5000µ contient des erreurs. C'est en large partie un copier/coller (traduit) des documentations techniques du VG5000µ et du Z80, mais avec des petites choses qui ont été traduites littéralement sans être comprises.

(Un de ces jours, je terminerai peut-être mon boulot de remise à plat de tout ça... un de ces jours... et il y aura des erreurs dedans, mais ça pourra être corrigé)
Guillaume
Messages : 46
Inscription : 26 avr. 2020 15:24
Localisation : Nice

Re: subtilité de rand VG5000

Message par Guillaume »

joaopa a écrit : 06 mai 2020 22:37 @Markerror. Merci de confirmer mes doutes.

@Guillaume: du coup, dans to programme Rode Lunner, qu'espérais-tu des intructions du type int(rnd(1)*5) (par exemple ligne 218)
Ligne 218 c'est pour fixer au hasard la longueur (en temps) du mode WAITING au démarrage du LEVEL. Pour ne pas que tous les ennemis se mettent en route tout de suite et en même temps. Je me sert d'un RND pour fixer cela. EL(EN)=INT(RND(1)*5)+5 qui donne une valeur entre 5 et 9 (nombre de cycle dans la boucle, correspondant normalement au double de mouvement 10 à 18 pour le héro).

A chaque fin de mode pour un ennemi, on change de mode au hasard pour une durée prise au hasard:
894 EL(N)=INT(RND(1)*10)+10:RETURN
Entre 10 et 19 cycles.

Note que on peut avoir un ennemi qui change de mode de poursuite et se retrouve au hasard dans le même mode que le mode précédent.
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13299
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: subtilité de rand VG5000

Message par Carl »

sur 900 000 tirages, voici les valeurs les plus basses...pas un seul zéro.
mini.jpg
mini.jpg (10.4 Kio) Consulté 3794 fois
Carl
Xavier_

Re: subtilité de rand VG5000

Message par Xavier_ »

Encore un truc bête…
INT(RND(1)) donnera TOUJOURS : 0

INT (0.0000001)=0
INT (0.9999999)=0

Donc, pour RND, comme on a jamais 1... on a toujours Zéro !

Il n'y a donc pas d'arrondis mais une valeur entière stricte...
__sam__
Messages : 7987
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: subtilité de rand VG5000

Message par __sam__ »

Carl a écrit : 07 mai 2020 09:33 sur 900 000 tirages, voici les valeurs les plus basses...pas un seul zéro.
Avec autant de tirages, comme je suppose que l'état interne du générateur doit avoir au max 16bits, tu as du certainement rencontrer le cycle plusieurs fois (13 fois à la louche). Par contre si le générateur est sur 24bits, il faudrait itérer sur un peu plus de 16M pour parcourir tout l'espace d'état et voir si 0 ou 1 sortent.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13299
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: subtilité de rand VG5000

Message par Carl »

j'ai relancé, le tirage est actuellement à 1.28 million
toujours pas de 0 ou 1
rnd stat.jpg
rnd stat.jpg (64.79 Kio) Consulté 3779 fois
Guillaume
Messages : 46
Inscription : 26 avr. 2020 15:24
Localisation : Nice

Re: subtilité de rand VG5000

Message par Guillaume »

Hello,

Effectivement, tu as raison, j'ai fait tourner sur plusieurs millions de tirages, je n'ai pas eu de 0 ni de 1.
Minimum: 0.000006 (6.83009 E-06)
Maximum: 0.999981

Je pense que j'ai du quiché en faisant mon print L après avoir stoppé le programme en mon trompant de variable pour avoir 0.
Avatar de l’utilisateur
Mokona
Messages : 1042
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: subtilité de rand VG5000

Message par Mokona »

En regardant de plus prêt ce que l'instruction fait : le nombre en sortie a un exposant fixé à $80. Cela ne peut donc jamais être un zéro.

La seule valeur qui se transcrit à zéro est lorsque l'exposant est $00 (valeur spécifique réservée).
Xavier_

Re: subtilité de rand VG5000

Message par Xavier_ »

@Markerror:
Bon, qui refait une version du bouquin ?
:-).
Bon, RND c'est fait, on passe à quoi ?

Non, sérieusement, ce Basic est très subtile et piégeux, même s'il est estampillé Microsoft.
Avatar de l’utilisateur
Mokona
Messages : 1042
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: subtilité de rand VG5000

Message par Mokona »

Voilà !
Capture d’écran de 2020-05-07 21-47-20.png
Capture d’écran de 2020-05-07 21-47-20.png (29.41 Kio) Consulté 3739 fois
Ce n'est pas un montage... mais une insertion de bonnes valeurs au bon moment avec un debugeur... Et je pense pouvoir montrer que ces valeurs ne peuvent jamais arriver. Pour 1, c'est absolument certain. Pour 0... je dois faire une dernière vérification, mais j'en suis quasi absolument certain.
Guillaume
Messages : 46
Inscription : 26 avr. 2020 15:24
Localisation : Nice

Re: subtilité de rand VG5000

Message par Guillaume »

RND 33 millions de tirages.jpg
RND 33 millions de tirages.jpg (297.39 Kio) Consulté 3734 fois
J'ai fait tourner le test avec 33 millions de tirage sur l'émulateur. (affichage tous les 1000 tirages)
Pas de 0 pas de 1.
J'ai arreté le test, le nombre de tirage me semble suffisant (ca avait convergé assez rapidement).
Répondre