Noise (FPScript)
Génère des nombres aléatoires distribués de manière égale, normale ou exponentielle.
Syntaxe
Noise(Value, [ Distribution = NOISE_UNIFORM ] [ , Init ])
La syntaxe de la fonction Noise se compose des éléments suivants :
Section |
Description |
||||||||
---|---|---|---|---|---|---|---|---|---|
Value |
Toute valeur qui détermine le nombre, la structure des données et l'unité des nombres aléatoires. Toutes les structures de données sont autorisées. Tous les types de données numériques sont autorisés. Si l'argument est une liste, alors la fonction est exécutée pour chaque élément de la liste et le résultat est également une liste. |
||||||||
Distribution |
Détermine la distribution statistique des nombres aléatoires. L'argument Distribution peut avoir les valeurs suivantes :
Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété. Si l'argument n'est pas spécifié, il est défini à la valeur par défaut NOISE_UNIFORM . |
||||||||
Init |
La valeur d'initialisation du générateur de nombres aléatoires. Si vous passez 0, le générateur n'est pas réinitialisé, c'est-à-dire que la séquence déjà commencée lors d'un appel précédent se poursuit. Si vous omettez l'argument ou appelez la fonction pour la première fois, le générateur est initialisé en utilisant l'heure système actuelle. Les structures de données autorisées sont Scalaire. Tous les types de données numériques sont autorisés. Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété. |
Remarques
Le type de données du résultat est toujours Virgule flottante de 64 bits.
La structure du résultat correspond à celle de l'argument Value.
Si Value a une structure de données composée, c'est-à-dire est un signal, une série de signaux ou une courbe 3D, alors la composante X et, le cas échéant, Z est copiée dans le résultat et un nombre aléatoire est généré pour chaque valeur de la composante Y.
Pour générer des nombres aléatoires uniformément distribués, la fonction utilise un générateur aléatoire avec des longueurs de cycle aléatoires, comme il est décrit pour le générateur "RANROT Type W" dans [1].
Les nombres aléatoires normalement distribués sont générés à partir de nombres aléatoires uniformément distribués à l'aide de la méthode de Box-Mueller. Les nombres aléatoires générés ont une moyenne de 0 et un écart-type de 1. À partir de là, toute autre distribution normale peut être dérivée par une simple transformation linéaire : μ + σ * Noise(x, NOISE_NORMAL), avec la moyenne souhaitée μ et l'écart-type souhaité σ.
Les nombres aléatoires distribués de manière exponentielle sont dérivés des nombres aléatoires distribués uniformément en utilisant la méthode de transformation. Les nombres aléatoires générés ont un lambda de 1. Vous pouvez générer toute autre distribution exponentielle à partir de cela par le biais de la division : Noise(x, NOISE_EXPONENTIAL) / , avec le lambda souhaité.
Les deux méthodes de transformation, entre autres, sont décrites dans [2].
Disponible dans
FlexPro Basic, Professional, Developer Suite
Exemples
Noise(1) |
Renvoi 0,8499 (aléatoire) |
x = (1000, 0.1 s, 0.01 s) |
Génère un signal avec 1000 nombres aléatoires uniformément distribués dans l'intervalle [0, 1] V et avec une composante X de 0 s à 10 s. |
3. + 2. * Noise(1#100, NOISE_NORMAL) |
Génère une série de données avec 100 nombres aléatoires normalement distribués avec une moyenne de 3 et un écart-type de 2. |
Voir aussi
Littérature
[1] "William H. Press et al.": Numerical Recipes in C, Second Edition. http://www.agner.org/random/theory,2001.
[2] "William H. Press et al.": Numerical Recipes in C, Second Edition, page 274. "Cambridge University Press",1992.ISBN 0-552-43108-5.