2009-11-29 7 views

Répondre

2
randnum=ceil(rand(1)*N) %Sample a random integer in the range 0 to N 
your_node = [x(randnum),y(randnum)] %Here is the sampled node from your data set 

Edit: changed floor to ceil. 
+0

hey thankx beaucoup mon ami, tu es grand ... – gurwinder

+4

Cette solution est correcte. Il peut générer la valeur '0' (qui ne peut pas être utilisée comme index) et produira rarement (si jamais) la valeur' N'. – gnovice

+3

Je suis corrigé. – Ksiresh

9

Vous pouvez utiliser la fonction RANDI pour générer un nombre aléatoire dans une plage donnée:

index = randi(N);    %# Generate a random integer in the range 1 to N 
plot(x(index),y(index),'o'); %# Plot the point 

EDIT: Comme indiqué par Mikhail, la fonction RANDI n'a été disponible depuis la version 7.7 (R2008b). Pour les versions antérieures, l'alternative suivante devrait fonctionner:

index = ceil(rand*N); 
+2

Bonne solution, mais disponible, si je me souviens bien, uniquement pour les deux dernières versions de Matlab. En règle générale, MathWorks devrait le mettre en place, à partir de quelle version une fonctionnalité est disponible. – Mikhail

+0

@Mikhail: Vous avez raison, ce serait bien s'ils mettent cela dans l'aide en ligne pour chaque fonction. À l'heure actuelle, vous devez vérifier ces pages de version pour le découvrir: http://www.mathworks.com/access/helpdesk/help/techdoc/rn/rn_intro.html – gnovice

0

Il suffit de prendre le premier. Étant un produit du rand() - fonction, il devrait être assez aléatoire pour tout le monde :-)

plot(x(1),y(1),'o');

+1

Cela serait bien pour les points générés de manière aléatoire, mais je pense que c'était juste un exemple que le PO a utilisé pour illustrer le problème. – gnovice

+0

Puis encore, puisque la question est clairement le niveau d'entrée, l'affiche originale pourrait se diriger vers une véritable atrocité: L'amélioration-random-by-random-antipattern. Rappelle-moi: int get_random_number() {return 4;/* Choisi vraiment au hasard par dés-roll. * /} –

Questions connexes