Comment générer de nombres aléatoires à partir d'un ensemble donné de valeurs?
int main()
{
srand(time(NULL));
int r=rand();
}
La fonction ci-dessus peut générer n'importe quel nombre, mais que si je veux générer un numéro à partir d'un ensemble de valeurs donné.
Par exemple si je veux générer un nombre au hasard, mais SEULEMENT à partir des valeurs 4,6,1,7,8,3
.
Est-il un moyen pour y parvenir?
Toute aide serait appréciée.
rand()
est autorisé à être très mauvais: stackoverflow.com/questions/24005459/...
Vous devez vous connecter pour publier un commentaire.
C'est assez simple. Créer un tableau. qui a les sorties que vous désirez (4,6,1,7,8,3). Ensuite, choisissez un hasard seau dans le tableau.
% 6
fondamentalement choisit les valeurs0 - 5
quels sont les indices dans votre tableau.Quelques informations sur comment vous pouvez manipuler
rand()
plus loin.rand() % 7 + 1
Explication:
rand() renvoie un nombre aléatoire entre 0 et d'un grand nombre.
% 7 obtient le reste après division par 7, qui sera un entier de 0 à 6 inclusivement.
1 les modifications de la gamme de 1 à 7 inclusivement.
r = myArray[rand()%6]
droit? sinon pourquoi vous avez définimuArray
?Si vous avez un ensemble prédéfini de valeurs que vous voulez choisir de façon aléatoire, puis les mettre dans un tableau, et l'utilisation
rand
pour obtenir l'index dans le tableau.Voir, par exemple, ce vieux DONC réponse pour savoir comment obtenir un nombre aléatoire à l'intérieur d'une fourchette (c'est à dire entre zéro et de la taille de la matrice pour votre cas).
Vous pourriez obtenir la liste des valeurs aléatoires que vous voulez et de les stocker dans un tableau. Ensuite, vous pouvez choisir un nombre aléatoire à partir de la gamme de la liste et choisissez l'emplacement à l'index spécifié.
Vous pouvez diviser le nombre aléatoire et ne prendre que les restes.
l'utilisation est aussi un indice de la matrice de votre voulais numéros de
Par exemple , si vous prenez le (nombre aléatoire % 3) vous recevrez 0,1,2
ainsi, vous pouvez utiliser le tableau de 3 voulais numéros de