Question

Y at-il moyen de générer au hasard un ensemble de nombres positifs tels qu'ils ont une moyenne souhaitée et l'écart-type?

J'ai un algorithme pour générer des nombres avec une distribution gaussienne, mais je ne sais pas comment faire face à des nombres négatifs d'une manière les préserve la moyenne et l'écart type.
Il ressemble à une distribution de poisson pourrait être une bonne approximation, mais il ne prend que moyenne.

EDIT: Il y a eu une certaine confusion dans les réponses, donc je vais essayer de clarifier.

J'ai un ensemble de chiffres qui me donnent une moyenne et un écart-type. Je voudrais créer un ensemble de nombres de taille égale avec un équivalent écart moyen et standard. Normalement, j'utiliser une distribution gaussienne pour ce faire, mais dans ce cas, j'ai une contrainte supplémentaire que toutes les valeurs doivent être supérieures à zéro.

L'algorithme Je cherche n'a pas besoin d'être gaussienne-fondé (en juger par les commentaires jusqu'à présent, il ne devrait probablement pas être) et n'a pas besoin d'être parfait. Peu importe si le jeu de nombre résultant a un écart moyen / standard légèrement différente -. Je veux juste quelque chose qui se situe habituellement dans l'ordre de grandeur

Était-ce utile?

La solution

Vous pouvez rechercher la distribution log-normale, comme David Norman a suggéré, ou peut-être exponentielle , binomiale , ou une autre distribution. Si vous avez un algorithme pour générer une distribution, il est probablement pas bon pour générer des nombres conformes à une autre distribution. Mais seulement vous savez comment vos chiffres sont vraiment distribués.

Avec la distribution normale, la gamme variable aléatoire est de l'infini négatif à l'infini, donc si vous cherchez des nombres positifs seulement, il n'est pas gaussienne.

Différentes distributions ont également des propriétés uniques, par exemple, avec une distribution de Poisson, les écarts-types est toujours égal à la moyenne. (Voilà pourquoi votre fonction de bibliothèque ne demande pas à partir du paramètre d'écart-type, que la moyenne).

Dans le pire des cas, vous pouvez générer un nombre réel aléatoire entre 0 et 1 et calculer la fonction de densité de probabilité sur votre propre. (Selon la distribution, cela peut être beaucoup plus facile à dire qu'à faire).

Autres conseils

D'abord, vous ne pouvez pas générer que des valeurs positives d'une distribution gaussienne.

En second lieu, ce que je comprends bien que vous essayez de générer une distribution aléatoire avec une moyenne donnée et l'écart-type? Fera une distribution? Si oui, laissez moyenne = m et écart-type = s. Je suppose que m - s > 0.

let n = random integer modulo 2;
if n equals 0 return m - s
else return m + s

Les valeurs renvoyées par ce processus auront m moyen et s écart-type.

Vous pouvez utiliser un distribution log-normale .

Pourquoi ne pas utiliser une méthode de ré-échantillonnage? Si vous avez n numéros dans votre échantillon, prenez n tirages au sort de l'échantillon, avec remplacement . L'ensemble résultant attendu moyenne et la variance de la même chose que votre échantillon original, mais il sera généralement légèrement différent.

Cela dit, sans savoir pourquoi vous avez besoin des chiffres plus aléatoires, il est impossible de dire quelle est la bonne réponse. On se demande si vous essayez de résoudre le mauvais problème ...

Je ne pouvais pas résister - Je aime vraiment l'angle de Jason mais n'a pas été heureux que sa réponse ne couvre que les cas où m> s, donc j'ai travaillé une solution générale
son idée. La distribution la plus simple avec m donné, s et des termes positifs est

  

avec une probabilité p, retour 0
  avec une probabilité (1-p), le retour m / (1-p)
  où (1-p) = 2 ^ m / (m + s ^ 2 ^ 2)

Preuve: pour une distribution X avec deux résultats LowX avec une probabilité p et highX avec une probabilité (1-p), France m = E [X] = p x LowX + (1-p) x highX
s ^ 2 = écart (X) = E [X ^ 2] - E [X] ^ 2 = p x LowX ^ 2 + (1-p) x highX ^ 2 - m ^ 2

Set LowX à 0 et résoudre dans highX et p.

Vous pouvez utiliser une distribution qui a un soutien positif et peut être spécifiée par la moyenne et la variance. Par exemple,

  • distributions d'un paramètre ne fonctionneront pas en général. Par exemple chi carré ne fonctionnera pas à moins que votre écart est toujours le double de sa moyenne. De même exponentielle ne fonctionnera pas à moins que votre variance égale à votre quadratique moyenne.
  • des distributions à deux paramètres ne fonctionnera pas dans certains cas. Distribution binomiale ne fonctionnera pas à moins que la variance est inférieure à votre moyenne. De même, le chi carré non centrale ne fonctionnera pas à moins que votre écart est supérieur à 2 fois votre moyenne et moins de 4 fois votre moyenne!
  • Cependant log-normale et gamma fonctionnera dans tous les cas.

Si je vous comprends bien, vous voulez générer des nombres aléatoires à partir d'une distribution avec un soutien positif. Il y a beaucoup de choix possibles. Le plus simple est le

chi carré: http://en.wikipedia.org/wiki/Chi-square_distribution (Qui est la somme de deux carrés gaussiennes)

Toute la répartition dissymétrique (exponentielle, Weibull, pareto, inverse gaussienne, log-normale, gamma)

Toutes les distributions du biais familliale (biaiser normale, inclinaison étudiant, ...)

Toutes les fonctions ci-dessus sont telles que tout nombre aléatoire tiré de l'un d'eux sera AllWays positif.

ce que le diable vous parlez des clowns? le niveau normal a une moyenne nulle, mais qui est un cas particulier de la distribution gaussienne, ce qui a des paramètres moyenne et écart-type. comme la moyenne augmente, avec sd maintenue constante, la probabilité de générer des nombres en dessous de zéro diminue à zéro. vous pouvez absolument avoir une distribution gaussienne sans nombres négatifs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top