2009-12-12 10 views
1

Salut J'essaie de générer des nombres aléatoires dans MATLAB avec une valeur MEAN aléatoire.MATLAB génère des nombres aléatoires

Par exemple, si j'utilise

e = mean(rand(1000,1)) 

la réponse pour e sera toujours proche de 0.5. Ce que je veux est la valeur de e (moyenne) être aléatoire, de telle sorte que e peut être 0,1, 0,2, 0,3, etc ...

Est-il exact pour moi d'utiliser e = mean(unifrnd(0,1,[1000,1]))?

Merci

Répondre

3

Peut-être que vous voulez générer normalement distribués nombres aléatoires X~N(0,1) avec randn. Ensuite, vous pouvez changer la moyenne et l'écart type pour être aléatoire. A titre d'exemple:

N = 1000; 
mu = rand*10 - 5;   %# mean in the range of [-5.0 5.0] 
sigma = randi(5);   %# std in range of 1:5 
X = randn(N, 1)*sigma + mu; %# normally distributed with mean=mu and std=sigma 
0

Au lieu de cela, pourquoi ne pas simplement générer des nombres aléatoires, et de modifier la gamme des nombres générés en fonction de l'endroit où la moyenne est à vs où vous voulez que la moyenne d'être?

+0

Salut, merci pour la réponse rapide. comment déterminer où se situe la moyenne? je veux que la moyenne soit aléatoire peut être 0.9 ou peut être 0.1 pas centrée autour de 0.5 ... je pense que ça a quelque chose à voir avec la distribution mais je ne suis pas sûr –

+0

Oh je pensais que vous essayiez de générer des nombres aléatoires . – Sneakyness

0

Quelles sont les autres propriétés que vous souhaitez? Vous pouvez faire quelque chose comme ceci:

nums = (rand(1000,1)+rand())/2 

Cela va décaler votre tableau d'un nombre aléatoire, déplaçant également la moyenne. Cela garderait la même déviation standard cependant. Quelque chose comme cela changerait à la fois:

nums = (rand(1000, 1)*rand()+rand())/2 
+0

salut, j'ai essayé nums = mean (rand (1000,1) + rand()). J'ai effectué le calcul plusieurs fois et j'ai parfois une valeur moyenne de> 1. –

+0

Oui, mais vous ajoutez deux nombres aléatoires ensemble, de sorte que vous pouvez obtenir un nombre supérieur à 1. Si vous voulez contraindre vos résultats être entre 0 et 1, essayez la nouvelle édition –

4

Vous devez expliquer ce que vous voulez la distribution de la moyenne. Bien sûr, vous le voulez au hasard, mais il y a de l'ordre même dans le hasard. S'il vous plaît, expliquez.

Si vous voulez une moyenne distribuée normalement, vous pouvez mettre à l'échelle les variables [z = (x-mu)/sigma] et changer mu de façon aléatoire. Si vous avez besoin d'une autre distribution pour la moyenne, des formules similaires existent.

Encore une fois, veuillez expliquer davantage.

0

si vous voulez l'échantillon à avoir exactement une moyenne donnée mu, je forcerais l'échantillon signifie être cette valeur:

x = some_random_variable_generator(arguments); 
x = x + (mu - mean(x)); 

alors vous avez terminé.

Questions connexes