Envoyé par
fdair07
Bonjour. j'ai trouvé un code SAL et j'essaye de l'écrire en LISP. Le problème est le suivant ; il faut écrire qu'une variable a une quantité de modulation qui varie entre plus ou moins 20 pour cent. Le code SAL est: mod-rnd = mod-det * 0.2 *rand-ctrl(). Je serais reconnaissant à un modérateur de m'indiquer comment on peut écrire en LISP cela.
Bonjour.
Il faudrait savoir quel lisp tu utilises, afin de savoir quelles sont ses possibilités de 'random'.
Par exemple, en Common Lisp (cf. 12.9. Random Numbers), la fonction 'random' admet un flottant.
[Function]
random number &optional state
(random n) accepts a positive number n and returns a number of the same kind between zero (inclusive) and n (exclusive). The number n may be an integer or a floating-point number.
Dans ce cas, la solution est très simple:
(setq mod-rnd (* mod-det 0.2 (1- (random 2.0))))
Si la fonction 'random' n'admet que des entiers (comme en emacs-lisp, par exemple), on peut s'en tirer avec un peu d'arithmétique de 6ème niveau:
1 2
| (setq *mod-rnd-precision* 1000000)
(setq mod-rnd (* mod-det 0.2 (1- (/ (/ (random *mod-rnd-precision*) 0.5) *mod-rnd-precision*)))) |
Partager