IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Variables aléatoires, Pbs sur G3
Options
Cicero
posté 22 Oct 2004, 17:38
Message #1


Nouveau Membre


Groupe : Membres
Messages : 38
Inscrit : 30 Jun 2004
Membre no 20 616



Bonjour à tous,

j'ai un petit pb avec les variables aléatoires d'AppleScript. Voilà, j'ai créé une petite appli pour mon gamin afin qu'il s'exerce (en s'amusant !) à un peu de calcul mental. J'avais tout fignolé, la possibilité d'un 2e joueur, le score et les temps. Les variables (du style :
set A to random number from 1 to 100 with seed 0) me servent évidemment
à afficher des nombres qui changent d'un tirage à l'autre.
Sur mon G4, ça fonctionne sans problème (aussi bien en OS9 qu'en X.3)
Le hic ! c'est que passé sur le G3 (blanc, 266 MHz), sur OS9, les valeurs sont les mêmes d'un tirage sur l'autre, même en biaisant avec une variable du style :
set B to random number from 100 to 200 with seed 0
set A to B mod 100
(pour retrouver des nombres compris entre 0 et 100). J'obtiens toujours 67 ou 66.
J'imagine que c'est une question de processeur. Connaissez-vous un moyen de contourner cette difficulté et d'afficher des nombres qui soient vraiment aléatoires.

Merci d'avance pour vos conseils,
Go to the top of the page
 
+Quote Post
zeRafioScripter
posté 22 Oct 2004, 20:10
Message #2


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 368
Inscrit : 19 Nov 2003
Membre no 11 803



Quelles sont les versions respectives d'OS 9 ?
Je pense que ce doit être la 9.2.2 sur ton G4.
Sur le G3, s'il n'y a pas OS X d'installé, le mieux est la 9.1.

Je pencherai plutôt pour un bug d'Applescript.
Mais ce n'est qu'à "vue de nez".


--------------------
--> Visitez mon site dédié à AppleScript sous Mac OS X zeRafioScripter et donnez-moi vos impressions !
Go to the top of the page
 
+Quote Post
chombier
posté 22 Oct 2004, 20:26
Message #3


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 580
Inscrit : 20 Mar 2003
Membre no 6 765



QUOTE(Cicero @ 22 Oct 2004, 17:38)
set A to random number from 1 to 100 with seed 0

La plupart des générateurs pseudo-aléatoires ont besoin d'une valeur initiale (le paramètre seed que tu mets à 0) elle même 'aléatoire' sinon, la séquence est toujours la même.
Tu peux te servir des ticks ou de la date actuelle, du genre:
CODE
set B to random number from 100 to 200 with seed time of (current date)


--------------------
késtananafout' (:
Go to the top of the page
 
+Quote Post
Jack the best
posté 22 Oct 2004, 20:40
Message #4


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 5 675
Inscrit : 3 Nov 2003
Lieu : CUL (Communauté Urbaine de Lille !) Bon Appartement Chaud
Membre no 11 246



QUOTE(chombier @ 22 Oct 2004, 21:26)
La plupart des générateurs pseudo-aléatoires ont besoin d'une valeur initiale (le paramètre seed que tu mets à 0) elle même 'aléatoire' sinon, la séquence est toujours la même.
Tu peux te servir des ticks ou de la date actuelle, du genre:
CODE
set B to random number from 100 to 200 with seed time of (current date)

[right][snapback]892094[/snapback][/right]

D'accord avec chombier : je ne connais pas la syntaxe, mais ce qui est sûr c'est que sur une calculette programmable, quand on utilise la fonction random, elle donne toujours le même nombre en premier, c'est pourquoi, au début d'un programme, il faut toujours une boucle du genre "tant que" … pour que … tant que l'on n'a pas appuyé sur une touche, le processeur tire des nombres au hasard.
Si bien que quand on démarre vraiment le programme, la fonction random donne vraiment un nombre … au hasard !

Me suis-je bien fait comprendre ou ai-je embrouillé la réponse de chombier ?

Ce message a été modifié par Jack the best - 22 Oct 2004, 20:42.


--------------------

iMac 27" Retina 5K 1To Fusion drive 8 Go RAM Intel Core I5 quadricœur à 3,5 GHz Mojave 10.14.6 , iMac Intel Core I5 3,1 GHz 1To (El Capitan 10.11.6 depuis le 13/9/2016) en rade carte mère !, MacBook Pro 17" 500 Go Snow Leopard, iMac G5 20" PPC Tiger 250 Go Rev A,
iPhone 14 128Go OS 16.1.1 et SONY pour la photo numérique Minolta pour l'argentique … Pink #FD3F92
Breton MB
Attention aux huîtres, SURTOUT celles qui mangent des oiseaux !
How much wood would a woodchuck chuck if a woodchuck could chuck wood ?
Go to the top of the page
 
+Quote Post
Cicero
posté 22 Oct 2004, 21:59
Message #5


Nouveau Membre


Groupe : Membres
Messages : 38
Inscrit : 30 Jun 2004
Membre no 20 616



Il s'agit de 9.2 (sur le G3).

Entre-temps j'ai essayé avec une variable de la forme :
set A4 to some item of {1, 2, 3,… , 100} et ça marche dans ce cas. Mais ce n'est pas très satisfaisant (ça va encore parce que la plage de 1 à 100 n'est pas trop étendue, mais dans le cas contraire !). De plus, mon G3 m'affiche le message : "Impossible d'enregistrer les modifications du script… car la mémoire disponible est insuffisante -108 " Bizarre.

L'inconvénient de me servir de la date pour modifier le paramètre seed (set A to random number from 1 to 100 with seed time of (current date)) est que, voulant charger 2 variables en même temps (je souhaite obtenir une addition du type A + B avec A et B aléatoires), eh bien il m'affiche des nombres A et B identiques.

Qu'est-ce que les "ticks" évoqués par chombier ?


Go to the top of the page
 
+Quote Post
chombier
posté 22 Oct 2004, 22:17
Message #6


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 580
Inscrit : 20 Mar 2003
Membre no 6 765



QUOTE(Cicero @ 22 Oct 2004, 21:59)
Il s'agit de 9.2 (sur le G3).

Entre-temps j'ai essayé avec une variable de la forme :
set A4 to some item of {1, 2, 3,… , 100} et ça marche dans ce cas. Mais ce n'est pas très satisfaisant (ça va encore parce que la plage de 1 à 100 n'est pas trop étendue, mais dans le cas contraire !). De plus, mon G3 m'affiche le message : "Impossible d'enregistrer les modifications du script… car la mémoire disponible est insuffisante -108 " Bizarre.

L'inconvénient de me servir de la date pour modifier le paramètre seed (set A to random number from 1 to 100 with seed time of (current date)) est que, voulant charger 2 variables en même temps (je souhaite obtenir une addition du type A + B avec A et B aléatoires), eh bien il m'affiche des nombres A et B identiques.

Qu'est-ce que les "ticks" évoqués par chombier ?
[right][snapback]892181[/snapback][/right]

Il faut que tu n'initialises le random seed qu'une seule fois dans ton programme:
CODE
set A to random number from 0 to 100 with seed time of (current date)
set B to random number from 0 to 100

Le tick, c'est un compteur en 1/60éme de secondes depuis le démarrage du Macintosh. Mais en fait je ne crois pas qu'il soit directement accessible dans AppleScript sans une osax.

Ce message a été modifié par chombier - 22 Oct 2004, 22:20.


--------------------
késtananafout' (:
Go to the top of the page
 
+Quote Post
zeRafioScripter
posté 23 Oct 2004, 16:46
Message #7


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 368
Inscrit : 19 Nov 2003
Membre no 11 803



Vos interventions sont très instructives, mais…

Je ne comprends par pourquoi le code de Cicero fonctionne comme il faut sur son G4 et pas sur son G3?

J'ai lancé la commande 'random number from 100 to 200 with seed 0' sur mon G4 OSX 10.2.8. Les valeurs renvoyées sont toujours différentes.

Il me semble plutôt qu'il y a une évolution d'AppleScript qui rectifie un bug ou qui change un comportement.

J'ai (dans un placard) un PowerBook WallStreet sous 9.1.
Dès que j'ai le temps, je me propose de faire un essai de ce code et de vous en donner les résultats.

wink.gif

Je n'ai pas pu attendre:
Sous 9.1, la commande renvoie toujours le même résultat, comme vous l'expliquez.
En ajoutant la date, ça fonctionne parfaitement:
random number from 100 to 200 with seed ((current date) as integer)

wink.gif

Ce message a été modifié par zeRafioScripter - 23 Oct 2004, 17:03.


--------------------
--> Visitez mon site dédié à AppleScript sous Mac OS X zeRafioScripter et donnez-moi vos impressions !
Go to the top of the page
 
+Quote Post
Doom Hammer
posté 23 Oct 2004, 17:30
Message #8


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 844
Inscrit : 10 Jul 2002
Membre no 2 871



Et en faisant juste :
random number from 100 to 200
?
Go to the top of the page
 
+Quote Post
chombier
posté 23 Oct 2004, 18:25
Message #9


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 580
Inscrit : 20 Mar 2003
Membre no 6 765



QUOTE(zeRafioScripter @ 23 Oct 2004, 16:46)
Vos interventions sont très instructives, mais…

Je ne comprends par pourquoi le code de Cicero fonctionne comme il faut sur son G4 et pas sur son G3?

Parcequ'Apple a sans doute changé le générateur aléatoire.
QUOTE(zeRafioScripter @ 23 Oct 2004, 16:46)
J'ai lancé la commande 'random number from 100 to 200 with seed 0' sur mon G4 OSX 10.2.8. Les valeurs renvoyées sont toujours différentes.

Il me semble plutôt qu'il y a une évolution d'AppleScript qui rectifie un bug ou qui change un comportement.

J'ai (dans un placard) un PowerBook WallStreet sous 9.1.
Dès que j'ai le temps, je me propose de faire un essai de ce code et de vous en donner les résultats.

wink.gif

Je n'ai pas pu attendre:
Sous 9.1, la commande renvoie toujours le même résultat, comme vous l'expliquez.
En ajoutant la date, ça fonctionne parfaitement:
random number from 100 to 200 with seed ((current date) as integer)

wink.gif
[right][snapback]892893[/snapback][/right]

Ben oui, mais deux appels consécutifs réinitialiseront le générateur aléatoire avec la même valeur de base (le seed), et redonneront donc la même valeur, à moins que, coup de bol, le système ne passe d'une seconde à l'autre à juste entre les deux appels.
Il faut initialiser le random seed une seule fois, au lancement de l'application, et ensuite, on peut juste appeler "random number from 100 to 200" sans seed.


--------------------
késtananafout' (:
Go to the top of the page
 
+Quote Post
zeRafioScripter
posté 23 Oct 2004, 19:01
Message #10


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 368
Inscrit : 19 Nov 2003
Membre no 11 803



Ma précédente intervention n'était pas pour contredire mais pour comprendre.

Pour les ticks (sous 9), il y a l'osax Jon's commands :
http://www.seanet.com/~jonpugh/

wink.gif


--------------------
--> Visitez mon site dédié à AppleScript sous Mac OS X zeRafioScripter et donnez-moi vos impressions !
Go to the top of the page
 
+Quote Post
le grimpeur
posté 24 Oct 2004, 00:28
Message #11


Expressivité Bovine
****

Groupe : Membres
Messages : 1 268
Inscrit : 23 Jun 2003
Lieu : Chez les Gones, mais vert de coeur...
Membre no 8 222



J'ai juste une question HS, mais comment ça marche un générateur aléatoire???


--------------------
Hackintosh | i3 540 3,07 Ghz | 8 Go DDR 1333 | SSD 60 Go Vertex 2 | Samsung EcoGreen F3 500 Go | Radeon 5770 HD 1Go DDR5 | Mac Os Lion 10.7.4
Synology Ds211j 2 x 1To RAID 1
iPhone 3GS | 16Go | iOS 5.1.1

Plus t'en chies fort, moins t'en chies longtemps. - proverbe montagnard -
Go to the top of the page
 
+Quote Post
Cicero
posté 24 Oct 2004, 11:12
Message #12


Nouveau Membre


Groupe : Membres
Messages : 38
Inscrit : 30 Jun 2004
Membre no 20 616



J'ai continué mes expériences au sujet des variables aléatoires en suivant vos conseils. Et j'ai l'impression que cela dépend de l'ordi.
- Sur un premier Power PC G3 (266) tournant en 9.2.2, la meilleure solution est effectivement d'afficher une variable quelconque du style
set A to random number from 1 to 100 with seed time of (current date)
Ensuite la fonction random donnera bien des nombres aléatoires.
Sinon avec le paramètre seed = 0, les séquences de nombres sortent toujours dans le même ordre.
- Sur un second G3, plus ancien (7200/90) et tournant en 8.6, là en revanche je n'ai plus de problèmes. Quel que soit le paramétrage de seed, j'ai bien des valeurs aléatoires. Curieux !
Go to the top of the page
 
+Quote Post
zeRafioScripter
posté 24 Oct 2004, 12:31
Message #13


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 368
Inscrit : 19 Nov 2003
Membre no 11 803



Je me souviens bien avoir utilisé cette fonction sous Système 8.x sans avoir besoin de l'initialiser. C'est ce que je voulais dire par :
QUOTE
Il me semble plutôt qu'il y a une évolution d'AppleScript qui rectifie un bug ou qui change un comportement.


On peut le dire autrement:
Dans Applescript, la fonction Random est "pré-parametrée" pour être automatiquement initialisée à chaque appel.
Un bug ou un oubli de la part des développeurs a pour conséquence que sous certaines versions de Mac OS (toutes les versions 9?) l'initialisation n'est pas prise en compte (cf. «rectifie un bug»).
A moins que ça n'ait été un choix des développeurs (cf. «qui change un comportement»), sur lequel ils sont revenus.

wink.gif

Ce message a été modifié par zeRafioScripter - 24 Oct 2004, 12:34.


--------------------
--> Visitez mon site dédié à AppleScript sous Mac OS X zeRafioScripter et donnez-moi vos impressions !
Go to the top of the page
 
+Quote Post
Bac's
posté 25 Oct 2004, 08:12
Message #14


Tendance cubiste
*****

Groupe : Membres
Messages : 1 595
Inscrit : 17 Sep 2003
Lieu : Là où ce qui tombe des arbres à l'automne commence par 'F' et finit par 'n'
Membre no 9 643



QUOTE(le grimpeur @ 24 Oct 2004, 01:28)
J'ai juste une question HS, mais comment ça marche un générateur aléatoire???
[right][snapback]893162[/snapback][/right]
Souvent on utilise des suite récurrentes du type :

Xn = (aXn-1 + b ) Mod N

Où Mod est l'opérateur modulo ! En choississant bien a, b, N (constantes) et X0 (graine du générateur) on peut obtenir des séquences pseudo aléatoires.

Un grand classique :

Xn = 7^5 Xn-1 mod (2^31-1)

qui produit une séquence de 2^31 - 1 nombres (si X0 != 0 )

Ce genre de générateurs est utile quand on veut pouvoir répéter une séquence.

D'autres générateurs nécessitent un peu de hard (comme mesurer la tension aux bornes d'une diode), mais ne sont plus répétitifs ce qui est d'un bon aloi dans certains cas mais peut poser des problèmes dans d'autres cas.

Ce message a été modifié par Bac's - 27 Oct 2004, 14:02.


--------------------
G5 1,6GHz 1 270Mo RAM OS/X 10.4.1 + STHome Hyper-Bidouillé

C'est à force de rater que l'on finit par réussir. Devise Shadok.


[Editus moderatus]Plus de bannières merci... [Editus Bacsus]Oui chef, bien chef !
Go to the top of the page
 
+Quote Post
le grimpeur
posté 26 Oct 2004, 20:11
Message #15


Expressivité Bovine
****

Groupe : Membres
Messages : 1 268
Inscrit : 23 Jun 2003
Lieu : Chez les Gones, mais vert de coeur...
Membre no 8 222



(mode HS fin)
Merci beaucoup
(/mode HS fin)


--------------------
Hackintosh | i3 540 3,07 Ghz | 8 Go DDR 1333 | SSD 60 Go Vertex 2 | Samsung EcoGreen F3 500 Go | Radeon 5770 HD 1Go DDR5 | Mac Os Lion 10.7.4
Synology Ds211j 2 x 1To RAID 1
iPhone 3GS | 16Go | iOS 5.1.1

Plus t'en chies fort, moins t'en chies longtemps. - proverbe montagnard -
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 5th May 2024 - 12:15