SmallTalk VisualWorks nombre pseudo-aléatoire
Résolu
HelpMePlease
-
HelpMePlease -
HelpMePlease -
Bonjour,
VisualWorks / SmallTalk (-> via plateforme de simulation CORMAS du CIRAD)
Je cherche à générer un nombre pseudo-aléatoire entre -5 et 30 avec SmallTalk. Le tirage doit suivre une loi normale (ou dans l'idéal une loi béta), centrée sur 15.
Le résultat voulu est d'obtenir un nombre très souvent proche de 15 et rarement proche de -5 ou 30.
Merci d'avance.
PS : si ce n'est pas faisable, merci de me le signaler !
VisualWorks / SmallTalk (-> via plateforme de simulation CORMAS du CIRAD)
Je cherche à générer un nombre pseudo-aléatoire entre -5 et 30 avec SmallTalk. Le tirage doit suivre une loi normale (ou dans l'idéal une loi béta), centrée sur 15.
Le résultat voulu est d'obtenir un nombre très souvent proche de 15 et rarement proche de -5 ou 30.
Merci d'avance.
PS : si ce n'est pas faisable, merci de me le signaler !
A voir également:
- SmallTalk VisualWorks nombre pseudo-aléatoire
- Pseudo whatsapp - Accueil - Messagerie instantanée
- Pseudo facebook - Guide
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Ascii nombre de caractères - Guide
4 réponses
Bonjour,
J'ai une petite idée sur l'algorithme mais je ne connais pas du tout ton environnement de travail.
J'ai une petite idée sur l'algorithme mais je ne connais pas du tout ton environnement de travail.
Bonjour,
Si tu as le temps de me conseiller sur l'algorithme, je t'en remercie. Par exemple en R ? Ou simplement en formalisant les équations ?
D'avance merci.
Si tu as le temps de me conseiller sur l'algorithme, je t'en remercie. Par exemple en R ? Ou simplement en formalisant les équations ?
D'avance merci.
Bonjour,
Si tu n'as pas encore trouvé ta solution,
indépendamment du langage, il me semble que tu cherches un nombre aléatoire auquel tu appliques une fonction qui reformate la sortie de sorte qu'elle corresponde à ton souhait.
A toi de définir la fonction : hyperbolique, parabolique, logarithmique ou autre ;
Le "centre de gravité" souhaité étant 15, avec comme limites -5 et +30, ce "centre" ne se trouve pas au centre des sorties possibles : 15 n'est pas à mi-chemin de -5 et +30 ; à toi de définir arbitrairement une méthode pour répartir les sorties autour de ton centre (15) : soit en tronquant les sorties qui sortent du champs attendu, soit en appliquant une fonction différente suivant que le nombre aléatoire obtenu sort à droite ou à gauche de ton "centre"
A ta dispo au besoin ;
Joyeux Noël et Bonne Année !
Si tu n'as pas encore trouvé ta solution,
indépendamment du langage, il me semble que tu cherches un nombre aléatoire auquel tu appliques une fonction qui reformate la sortie de sorte qu'elle corresponde à ton souhait.
A toi de définir la fonction : hyperbolique, parabolique, logarithmique ou autre ;
Le "centre de gravité" souhaité étant 15, avec comme limites -5 et +30, ce "centre" ne se trouve pas au centre des sorties possibles : 15 n'est pas à mi-chemin de -5 et +30 ; à toi de définir arbitrairement une méthode pour répartir les sorties autour de ton centre (15) : soit en tronquant les sorties qui sortent du champs attendu, soit en appliquant une fonction différente suivant que le nombre aléatoire obtenu sort à droite ou à gauche de ton "centre"
A ta dispo au besoin ;
Joyeux Noël et Bonne Année !
Pour une loi normale... la solution trouvée ci-dessous en smallTalk (Cormas random est un tirage aléatoire entre 0 et 1 : CIRAD). La je n'utilise qu'une dimension mais on peut le faire en deux dimensions en utilisant y2. Merci à ceux qui m'ont répondus.
| x1 x2 y1 y2 w t|
x1 := (2 * (Cormas random)) - 1.
x2 := (2 * (Cormas random)) - 1.
w := (x1 * x1) + (x2 * x2).
w<=1 ifTrue: [
w := ( ((0-2) * ((w)ln)) /w )sqrt.
y1 := x1 * w.
t := 0 - 2.
y1<=t ifTrue: [y1 := t].
y1>=2 ifTrue: [y1 := 2].
y2 := x2 * w.].
self stochastic: y1.
^stochastic ifNil: [stochastic := 0]
| x1 x2 y1 y2 w t|
x1 := (2 * (Cormas random)) - 1.
x2 := (2 * (Cormas random)) - 1.
w := (x1 * x1) + (x2 * x2).
w<=1 ifTrue: [
w := ( ((0-2) * ((w)ln)) /w )sqrt.
y1 := x1 * w.
t := 0 - 2.
y1<=t ifTrue: [y1 := t].
y1>=2 ifTrue: [y1 := 2].
y2 := x2 * w.].
self stochastic: y1.
^stochastic ifNil: [stochastic := 0]