hai i need a command for following details........

1 vue (au cours des 30 derniers jours)
VIJAY
VIJAY le 11 Déc 2017
Modifié(e) : Jan le 11 Déc 2017
Here i am using the following command
as
>> randperm(12,4)
>> 1 3 8 12
In above command the maximum value is 12 for this command.
How can i set the the limit of randperm command ie the result should be as the range of 2 to 12???????????
the answer may be as
>>2 5 6 7........

Réponse acceptée

Birdman
Birdman le 11 Déc 2017
One approach:
while true
a=randperm(12,4)
if max(a)>7
else
break;
end
end
  4 commentaires
KL
KL le 11 Déc 2017
Unfortunately no...
Yes, there is. Check my answer.
Jan
Jan le 11 Déc 2017
Modifié(e) : Jan le 11 Déc 2017
Why complicated if it can be written simpler? Compare:
if max(a) > 7
else
break;
end
with
if max(a) <= 7
break;
end
But the original question does not contain a limit like max(a) <= 7, but "the range of 2 to 12".

Connectez-vous pour commenter.

Plus de réponses (2)

KL
KL le 11 Déc 2017
Simpler:
Use randsample
randsample(2:12,4)
ans =
9 3 4 2
  9 commentaires
VIJAY
VIJAY le 11 Déc 2017
Thank you........
Jan
Jan le 11 Déc 2017
@Birdman: I do not see any limit of 7 for the values in the question also. "Values from 2 to 12 with maximum 7" is not even meaningful, but this would be "values from 2 to 7".

Connectez-vous pour commenter.


Walter Roberson
Walter Roberson le 11 Déc 2017
"s it possible to create an array by using this command(randsample(2:12,4)) for example the array size is 7*4 etc etc...???????"
[~,temp] = sort(rand(7, 11), 2);
result = 1 + temp(:,1:4));
The range 2 to 12 is achieved by taking the range 1 to 11 and adding 1 to that.
The random ordering is done by sorting random numbers by rows. This method of sort() is what randperm it self used to use.
  1 commentaire
Jan
Jan le 11 Déc 2017
randperm uses the sorting of a random vector only, if it is called with 1 input. For 2 inputs I assume the faster Fisher-Yates-Shuffle is applied (at least randperm(n,n) is much faster than randperm(n) - enhancement request was sent already).
Nevertheless, randperm(11, 4) + 1 is an easy solution also, but must be called in a loop.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by