J'essaye de produire un flottant aléatoire dans la gamme -50.0 et 50.0 inclusivement, en utilisant rand(). J'ai cherché partout une réponse, mais il s'agit d'ints et de% operator.Produire un flottement aléatoire de la plage négative à la plage positive?
Répondre
Essayez ceci:
float RandomNumber(float Min, float Max)
{
return ((float(rand())/float(RAND_MAX)) * (Max - Min)) + Min;
}
Essayez ceci:
rand()
vous donne un nombre compris entre 0 etRAND_MAX
- donc diviser par
RAND_MAX
pour obtenir un nombre compris entre 0 et 1 - vous désirez une gamme de 100 de -50 à 50, alors multipliez par 100.0
- finalement décaler le centre de 50 (entre 0 et 100 par le point 3) à zéro en soustrayant 50.0
((float)rand())/RAND_MAX * 100.0 - 50.0
Honnêtement, toutes les réponses actuelles n'expliquent pas qu'il y ait un changement dans la distribution de leurs solutions (je suppose que rand() suit la distribution uniforme! corrigez-moi si je me trompe s'il vous plaît). Utilisez une bibliothèque s'il vous plaît, et ma recommandation utilise les nouvelles installations en C++ 0x:
#include <random>
#include <functional>
int main()
{
std::mt19937 generator;
std::uniform_real_distribution<float> uniform_distribution(-50.0, 50.0);
auto my_rand = std::bind(uniform_distribution, generator);
}
Si vous ne pouvez pas, Boost est un choix parfait. De cette façon, vous pouvez utiliser my_rand() tout comme le bon vieux rand():
std::vector<float> random_numbers(1000);
std::generate(random_numbers.begin(), random_numbers.end(), my_rand);
La question dit qu'il doit utiliser 'rand' spécifiquement. Mais oui, je suis d'accord; Si la distribution est vraiment importante, le boost semble être une bonne option. – Maxpm
@Max: Plus précisément, la question dit "essayer ... en utilisant rand()"; l'OP n'a jamais dit que c'était une * exigence *. – Cascabel
@Jefromi Bon point. Je dois être plus privé de sommeil que d'habitude. : P – Maxpm
- 1. Produire un nombre aléatoire dans une plage en utilisant C#
- 2. Comment générer une décimale positive ou négative aléatoire?
- 3. Créer un nombre pair aléatoire entre plage
- 4. Nombre aléatoire dans la plage [min - max] en utilisant PHP
- 5. Chaud pour obtenir une date aléatoire dans la plage
- 6. NHibernate, une colonne deux significations, positive/négative
- 7. PNL: phrase «positive» vs «négative» qualitativement
- 8. requêtes SQL pour retourner un article dans la plage ou la plage la plus proche
- 9. plage: appliquer la mise en forme à une sous-section dans la plage
- 10. Modification d'une valeur positive à une valeur négative
- 11. Comment analyser la plage horaire?
- 12. sélectionner la requête par plage
- 13. Excel VBA obtenir plage de la plage sélectionnée par l'utilisateur par la souris
- 14. Valeur de contrôle conditionnelle positive par rapport à la valeur négative
- 15. GpsSatellite.getSnr() - Quelle est la plage de valeurs?
- 16. Trouver l'intersection de la plage de numéros
- 17. Comment trouver la plage de fonctions?
- 18. La validation de la plage de données ne fonctionne pas
- 19. Plage de sous-chaîne dans la chaîne
- 20. Défilement de la plage dans UITextView
- 21. Définir la couleur int en fonction de la valeur positive ou négative en utilisant CSS
- 22. Horodatage MySQL sélectionner la plage de dates
- 23. html - plage de sélection - obtention de la plage + nœud de départ + nœud de fin + distance
- 24. Plage de sélection complexe
- 25. Copier une plage à distance
- 26. Flex: Désactiver la plage sur Slider?
- 27. index de plage mysql
- 28. Validateur de plage ASP.net passer à la page suivante
- 29. Retour à la ligne correct dans une balise de plage
- 30. Iterate hachage pour la plage spécifique
double possible de [float aléatoire C de] (http://stackoverflow.com/questions/686353/c-random-float –