Nombres aléatoires avec Gaussien et des Distributions Uniformes dans matlab
Je veux générer un certain nombre de Gaussiennes et des distributions Uniformes dans matlab.
Je sais que cette fonction randi
et rand()
mais tous sont dans la normale (Gaussienne) de distribution. Comment générer un nombre aléatoire à distribution uniforme?
Une distribution normale est une distribution Gaussienne.
J'ai réussi à lire dans votre esprit dans la mise à jour de réponse ?
tnx pour votre attention, oui je l'ai lu
J'ai réussi à lire dans votre esprit dans la mise à jour de réponse ?
tnx pour votre attention, oui je l'ai lu
OriginalL'auteur Yusef Mohamadi | 2012-12-12
Vous devez vous connecter pour publier un commentaire.
Utilisation
rand(dimensions)
pour un Distribution Uniforme entre 0 et 1.Utilisation
randn(dimensions) * sqrt(sigma) + mu
pour un Distribution Gaussienne avec une moyenne de mu et de la variance de sigma.randnrm
n'est pas valide, la fonction dans matlab 2011 🙁Ok, juste mis à jour et testé sur r2011a.
L'écart type et la variance sont des choses différentes, la réponse est actuellement mal. Il y a une autre réponse qui est correcte.
Correction d'une erreur dans la version antérieure, devrait être bon maintenant.
puis-je poser une question. Je veux le nombre aléatoire dans l'intervalle (0,1), alors que j'essaie randn() * sqrt(1) + 0. Je suis numéro lager de 1, et certains nombre négatif -2, -3. Quel est le problème?
OriginalL'auteur supyo
randn
est la fonction pour générer Gaussien distribué des variables (randi
etrand
produire uniformément répartie).randn
dans matlab 2011 voir cette aide randn RANDN Normalement distribué des nombres pseudo-aléatoires. R = RANDN(N) retourne le N-par-N de la matrice contenant les valeurs pseudo-aléatoires tirés de la distribution normale standard. RANDN(M,N) ou RANDN([M,N]) retourne une M-par-N de la matrice. RANDN(M,N,P,...) ou RANDN([M,N,P,...]) retourne une M-par-N-en-P-par-... tableau. RANDN retourne un scalaire. RANDN(SIZE(A)) retourne un tableau de la même taille que l'A. Remarque: La taille des entrées M, N, P, ... doivent être des entiers non négatifs. Les entiers négatifs sont traités comme des 0.Oui. Signifie normalement "Gaussien". Vous souhaitez rand et randn, comme d'autres l'ont dit.
distribution normale est aussi appelée distribution Gaussienne.
OriginalL'auteur Jonas
Vous pouvez générer une distribution de rand().
Par exemple , disons que vous voulez générer plus de 100000 échantillons de rayleigh dist.La manière de faire cela est que vous inversez la cdf de cette fonction particulière.L'idée de base est que, depuis le cdf doit être entre 0 et 1 , on peut trouver la valeur de la variable aléatoire par la saisie de la valeur de la cdf b/w 0 et 1. Afin de rayleigh, il serait
Vous pouvez faire quelque chose de similaire pour la distribution gaussienne.
sigma = 3; tmp = (2*sigma^2 *(-(log(1 - rand(1e6, 1))))).^.5; hist(tmp, 100)
.OriginalL'auteur raj
Congrulations, vous avez déjà la génération de nombres pseudo-aléatoires avec une distribution gaussienne. Distribution normale est un synonyme pour elle.
La seule autre interprétation possible, je peux obtenir à partir de votre question, c'est que vous voulez quelque chose qui a moyenne de != 0 et/ou la variance != 1. Pour ce faire, il vous suffit d'effectuer
mean + sqrt(var) * randn(X)
.Vous avez besoin de chercher vos livres, ou d'autres sources. Avez-vous lu la première phrase de ma réponse ? Ils sont synonymes, c'est à dire, ils sont la même chose.
oui je l'ai lu, je veux distribue 2, 1:gaussienne(normale ) ,2:uniforme
Ok, un
uniform
est obtenue par les les fonctions vous avez déjà posté. Ensuite, vous avez demandé unenormal
etgaussian
, qui sont la même chose. Si vous savez déjà comment générer ununiform
, etnormal
/gaussian
, quoi d'autre est à gauche ?OriginalL'auteur mmgp
La suite de raj réponse: en utilisant le de Box-Muller Transformer vous pouvez générer indépendant norme Normal/Gaussien nombres aléatoires:
Si vous souhaitez appliquer le Inverse de la Méthode de Transformation, vous pouvez utiliser l'Inverse de la Fonction d'Erreur Complémentaire (erfcinv):
Mais j'espère
randn
fonctionne mieux.OriginalL'auteur randomatlabuser
Il est vrai que vous pouvez générer à peu près tout à partir de
rand
mais qu'il n'est pas toujours pratique, surtout pour certains compliqué distributions.MATLAB a introduit Distribution De Probabilité Des Objets qui en font un beaucoup plus facile et vous permettre d'accéder de manière transparente
mean
,var
,truncate
,pdf
,cdf
,icdf
(transformation inverse),median
, et d'autres fonctions.Vous pouvez ajuster une distribution de données. Dans ce cas, nous utilisons
makedist
à définir la distribution de probabilité de l'objet. Ensuite, nous pouvons générer à l'aide derandom
.Un exemple reproductible:
Références:
Distribution Uniforme
Normale (Gaussienne) De Distribution
OriginalL'auteur SecretAgentMan