Je voudrais générer un nombre aléatoire entre 1 et 10 en utilisant par exemple est-ce possible de faire en quelque sorte? P> randi ([1,10]) code> mais je voudrais exclure un nombre unique, par exemple 7 - Ce nombre serait toujours Modifier et être spécifié dans une variable appelée B code>. p>
3 Réponses :
Utilisez ici Si vous n'avez pas la boîte à outils Statistiques installée, vous ne pourrez pas utiliser randsample code> . Par exemple, pour générer un nombre compris entre 1 et 10, excluant 7, procédez comme suit: Sediff code> est utilisé pour exclure la valeur de B code> à partir du vecteur 1:10 code>. p> randsample code>, alors utilisez RAND CODE> : P> v = setdiff(1:10, b);
x = v(ceil(numel(v) * rand));
Pour la deuxième solution, on peut utiliser x = v (randi (numel (V))); code>
@Mohsennosratinia Oui, tu as raison. Mais gardez également à l'esprit qu'il n'y a pas de randi code> dans les anciennes versions de Matlab.
Eh bien, Randi Code> est apparu dans R2008B et je pense que le nombre de personnes qui n'ont pas de statistiques boîtes à outils sont bien plus grandes que les personnes qui l'ont sur une version de plus de 5 ans.
pour ceux sans la boîte à outils statistiques:
pop(randi(numel(pop), 1, n))
Randperm code> est correct si vous ne voulez pas répéter les répétitions.
@glglgl, ce n'est pas vraiment nécessaire pour la question mais je l'ai changé à numel (pop) code> à la place, la population peut même être une grille de nombres si désiré.
AS @ittant mentionné, vous pouvez utiliser randsample code> pour le faire, mais je pense que cela de le faire de manière plus simple devrait faire pour vous: v = [1:b-1,b+1:10];
x = v(ceil(numel(v) * rand));
Et si b = 1 ou b = 10?
Juste boucle sur le
randi ([1,10]) code> jusqu'à ce que le résultat ne soit pas égalB code>.Oui, mais cela se produirait dans un programme et je ne suis pas là pour superviser cela. Je cherche un argument qui omet b.
@ user1723765 La boucle et les tests peuvent être automatisés.