Dans la même veine que la mise à l'échelle d'un readADC10,
je souhaite faire la moyenne de n valeurs (toujours en conservant un maximum de précision).
Voici l'état actuel de mes cogitations.
Ca à l'air de marcher pas trop mal,
mais si quelqu'un trouve plus simple, je suis preneur.
En particulier si un Deus ex machina (Mark) connait une fonction magique (genre **) il est le bienvenu !
je souhaite faire la moyenne de n valeurs (toujours en conservant un maximum de précision).
Voici l'état actuel de mes cogitations.
Code:
#simspeed 0
symbol I =w1
symbol Volt=w2
symbol Coef=w3
symbol Somme=w4
symbol Nombre=w5
symbol Moyenne=w6
symbol N=w7
symbol Temp=w8
symbol Fort=w9
symbol N2=w10
symbol AA=w11
symbol BB=w12
symbol CC=w13
symbol DD=w14
symbol EE=w15
main:
somme=0
nombre=0
coef=1
random n
n=n/1000+30
for I=1 to n
random Volt
Volt=Volt/16+11000
gosub cumul
sertxd ("V=",#Volt, 13)
next I
sertxd(13,"N=",#nombre," S=",#Fort,"*65536+",#somme,13)
' 65536 n'existe pas, donc ont fait 2*32768. Attention : Nombre>1 sinon ça merde
aa=32768/Nombre
bb=aa*fort*2
cc=32768//Nombre
dd=cc*Fort*2/nombre
' arrondi exemple : 5//3=2 ==> ee=4/3=1 mais 4//3=1 ==> ee=2/3=0
ee=somme//nombre*2/nombre
moyenne=somme/nombre+bb+dd+ee
sertxd (" A=",#aa," B=",#bb," C=",#cc," D=",#dd," E=",#ee,13)
sertxd ("Moyenne=",#moyenne,13)
end
Cumul:
temp=somme+Volt
if temp<somme then
inc fort
endif
somme=temp
inc nombre
return
mais si quelqu'un trouve plus simple, je suis preneur.
En particulier si un Deus ex machina (Mark) connait une fonction magique (genre **) il est le bienvenu !