« Mathématiques avec Python et Ruby/Suites en Ruby » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 38 :
</source>
 
Quoique chaotique, cette suite ne fait pas un bon générateur pseudo-aléatoire, parce que les nombres proches de 0 et 1 sont trop souvent visités. Pour le vérifier graphiquement, on peut dessiner un histogramme des 4000 premières valeurs de la suite, avec l'algorithme suivant:
 
#On fait comme ci-dessus, mais au lieu d'afficher ''u'', on incrémente l'entrée d'un tableau des effectifs indexée par sa troncature. C'est ce tableau qui va être représenté graphiquement.
#Ensuite, on représente chaque effectif par un rectangle de largeur 4 pixels et de hauteur l'effectif correspondant. Les rectangles sont bleus, remplis de vert.
 
Le tout est fait en écrivant les instructions dans le langage [[w:Scalable Vector Graphics|svg]], engendrées par ''Ruby'', dans un fichier ''HistogramRuby1.svg'' visible ci-dessous. Voici le script au complet:
 
<source lang="ruby">
figure=File.open("HistogramRuby1.svg","w")
figure.puts('<?xml version="1.0" encoding="utf-8"?>')
figure.puts('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"')
figure.puts('"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">')
figure.puts('<svg xmlns="http://www.w3.org/2000/svg" width="500" height="360">')
 
effectifs=[0]*100
u=0.1
 
4000.times do
u=4*u*(1-u)
effectifs[(100*u).to_i]+=1
end
 
(0..99).collect{|n| figure.puts('<rect x="'+(4*n+50).to_s+'" y="'+(320-effectifs[n]).to_s+'" width="4" height="'+effectifs[n].to_s+'" fill="green" stroke="blue" stroke-width="1" />')}
 
figure.puts('</svg>')
figure.close
</source>
 
Et voici le fichier produit par le script:
 
[[Fichier:HistogramRuby1.svg|center]]