Je dois générer des nombres dans la plage [-100; +2000] en C++. Comment puis-je faire cela avec rand s'il n'y a que des nombres positifs disponibles? Y a-t-il des moyens rapides?Numéros aléatoires et négatifs
Répondre
générer un nombre aléatoire entre 0 et 2100 puis soustrayez 100.
Une recherche rapide Google se un decent looking article on using Rand(). Il comprend des exemples de code pour travailler avec une gamme spécifique à la fin de l'article.
Pouvez-vous générer un nombre de 0-2100 et soustraire 100?
générer un nombre aléatoire entre 0 et 2100, et soustrayez 100.
Voici le code.
#include <cstdlib>
#include <ctime>
int main()
{
srand((unsigned)time(0));
int min = 999, max = -1;
for(size_t i = 0; i < 100000; ++i)
{
int val = (rand()%2101)-100;
if(val < min) min = val;
if(val > max) max = val;
}
}
Actuellement ma syntaxe C++ est un peu rouillé, mais vous devez écrire une fonction qui prend deux paramètres: size
et offset
.
Vous générez ainsi des nombres avec le size
donné comme valeur maximale et ajoutez ensuite le décalage (négatif).
La fonction ressemblerait à ceci:
int GetRandom(int size, int offset = 0);
et serait appelé dans votre cas:
int myValue = GetRandom(2100, -100);
En C++ 0x ils illumineront cette d'offrir un meilleur soutien avec un bibliothèque standard.
Vous pouvez utiliser les fonctions aléatoires C++ TR1 pour générer des nombres dans la distribution souhaitée.
std::random_device rseed;
std::mt19937 rng(rseed());
std::uniform_int<int> dist(-100,2100);
std::cout << dist(rng) << '\n';
Pour ceux sans TR1, boost :: random est assez proche. – MSalters
- 1. Numéros aléatoires int64 et float64
- 2. Numéros aléatoires dans C#
- 3. Numéros aléatoires utilisant C#
- 4. Numéros aléatoires et stockage local thread
- 5. ASP.NET - Numéros négatifs dans la parenthèse
- 6. Numéros aléatoires dans différents langages de programmation
- 7. Disposition du clavier iPhone pour les numéros négatifs?
- 8. Ces numéros aléatoires sont-ils 'sûrs'
- 9. générateur de nombres aléatoires C de sans numéros répéter
- 10. Mélangez les numéros aléatoires. dans une zone de liste déroulante
- 11. Numéros aléatoires lognormaux dans la plage spécifique dans Matlab
- 12. ruleML - avantages/points négatifs?
- 13. entiers négatifs à pourcentage
- 14. MS-Excel Temps négatifs
- 15. nombres aléatoires dans C#
- 16. Cartes/graphiques aléatoires et OSM
- 17. Boost :: Types aléatoires et énumérations
- 18. rails validate_format_of entiers non négatifs
- 19. SSAX-sXML et les numéros
- 20. IIS6, ASP.NET MVC 1 et ralentissements aléatoires
- 21. Générer caractères aléatoires et entiers en C++
- 22. Importer des nombres négatifs avec SSIS 2005
- 23. travailler avec des nombres négatifs en python
- 24. sql joindre le problème avec des négatifs
- 25. Accès aux valeurs de pixels négatifs OpenCV
- 26. Traiter les nombres négatifs dans les chaînes
- 27. Comment éviter les nombres négatifs dans Mysql
- 28. tracer des nombres négatifs avec flot/jquery
- 29. numéros personnalisés et Ponctuation clavier pour UITextField
- 30. Validation des numéros de téléphone et mobiles
Ceci ne donnera pas une distribution égale! De plus, trouver le minimum et le maximum de 100 000 tels nombres n'est pas pertinent à la question. – darklon
Aussi, si par hasard 'val' était' -100' à chaque fois, le 'max' résultant serait faux. Idem pour le minimum. –
@Cornelius, @Ben: Qui s'en soucie? C'est juste une démo. Si j'avais posté juste '(rand()% 2101) -100' qui aurait été mieux qu'un échantillon compilable et exécutable? S'il vous plaît. –