gauss
Prev | Opcodes et opérateurs de l'orchestre | Next

## gauss

gauss — Générateur de nombres aléatoires de distribution gaussienne.

## Description

Générateur de nombres aléatoires de distribution gaussienne. C'est un générateur de bruit de classe x.

## Syntaxe

    ares gauss krange

    ires gauss krange

    kres gauss krange

## Exécution

krange -- l'intervalle des nombres aléatoires (-krange à +krange). Produit des nombres positifs et négatifs.

gauss retourne des nombres aléatoires suivant une distribution normale centrée sur 0 (mu = 0.0) avec une variance (sigma) de krange / 3.83. Ainsi plus de 99.99% des valeurs aléatoires générées sont comprises entre -krange et +krange. Si l'on veut une valeur moyenne différente de 0.0, il faut ajouter cette valeur moyenne à chaque nombre généré (voir l'exemple ci-dessous).

Pour des explications plus détaillées sur ces distributions, consulter :

1. C. Dodge - T.A. Jerse 1985. Computer music. Schirmer books. pp.265 - 286

2. D. Lorrain. A panoply of stochastic cannons. In C. Roads, ed. 1989. Music machine . Cambridge, Massachusetts: MIT press, pp. 351 - 379.

## Exemples

Voici un exemple de l'opcode gauss. Il utilise le fichier gauss.csd.

Example 343. Exemple de l'opcode gauss.

Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.

    <CsoundSynthesizer>
    <CsOptions>
      -d -o dac
    </CsOptions>
    <CsInstruments>
    instr 1
    irange   = p4
    imu      = p5
    isamples = p6
    indx     = 0
    icount   = 1
    ix       = 0.0
    ix2      = 0.0

    loop:
    i1       gauss   irange
    i1       =       i1 + imu
    ix       =       ix + i1
    ix2      =       ix2 + i1*i1
    if i1 >= -(irange+imu) && i1 <= (irange+imu) then
      icount = icount+1
    endif
             loop_lt indx, 1, isamples, loop

    imean    =       ix / isamples                         ;mean value
    istd     =       sqrt(ix2/isamples - imean*imean)      ;standard deviation
             prints "mean = %3.3f, std = %3.3f, ", imean, istd
             prints "samples inside the given range: %3.3f\%\n", icount*100.0/isamples
    endin
    </CsInstruments>
    <CsScore>
    i 1 0   0.1 1.0   0   100000  ; range = 1, mu = 0.0, sigma = 1/3.83 = 0.261
    i 1 0.1 0.1 3.83  0   100000  ; range = 3.83, mu = 0.0, sigma = 1
    i 1 0.2 0.1 5.745 2.7 100000  ; range = 5.745, mu = 2.7, sigma = 5.745/3.83 = 1.5
    </CsScore>
    </CsoundSynthesizer>

Sa sortie contiendra des ligne comme celles-ci :

    mean = 0.000, std = 0.260, samples inside the given range: 99.993%
    mean = 0.005, std = 0.999, samples inside the given range: 99.998%
    mean = 2.700, std = 1.497, samples inside the given range: 100.000%

## Voir aussi

seed, betarand, bexprnd, cauchy, exprand, linrand, pcauchy, poisson, trirand, unirand, weibull

## Crédits

Auteur : Paris Smaragdis
MIT, Cambridge
1995

Précisions sur mu et sigma ajoutées par François Pinot après une discussion avec Joachim Heintz sur la liste de Csound, Décembre 2010.

Exemple écrit par François Pinot, adapté d'un fichier csd de Joachim Heintz, Décembre 2010.

Existait dans la version 3.30

Prev | Up | Next
gainslider | Home | gaussi