J'ai besoin d'un générateur de nombres aléatoires C++ (pseudo, je m'en fou) qui peut me donner des nombres différents chaque fois que j'appelle la fonction. Cela pourrait être simplement la façon dont je l'ai semé, peut-être qu'il y a une meilleure méthode, mais chaque générateur aléatoire que je possède ne génère pas un nouveau nombre chaque fois qu'il est appelé. J'ai besoin d'obtenir plusieurs nombres aléatoires par seconde à l'occasion, et n'importe quel RNG je branche tend à obtenir le même nombre plusieurs fois de suite. Bien sûr, je sais pourquoi, parce qu'il est semé par le second, donc il ne génère qu'un nouveau nombre chaque seconde, mais je dois, d'une façon ou d'une autre, obtenir un nouveau numéro à chaque appel. Est-ce que quelqu'un peut-il me montrer la bonne direction?Un générateur de nombres aléatoires qui peut obtenir des nombres différents en <une seconde
Répondre
Sons comme vous le faites comme ceci:
int get_rand() {
srand(time(0));
return rand();
}
Ce qui expliquerait pourquoi vous obtenez le même numéro dans la seconde. Mais vous devez le faire comme ceci:
int get_rand() {
return rand();
}
Et appeler srand une fois au démarrage du programme.
Vous avez seulement besoin d'ensemencer le générateur une fois avec srand()
lorsque vous démarrez, après cela il suffit d'appeler la fonction rand()
. Si vous semez le générateur deux fois avec la même graine, vous obtiendrez la même valeur à chaque fois.
Vous devez uniquement ensemencer le PRNG une fois.
Si vous générez un grand nombre de nombres aléatoires, vous pouvez essayer un générateur XORShift. Pour languit (8 bits):
// initial setup
unsigned long x = ... init from time etc ...
// each time we want a random number in 'x':
x ^= x << 21;
x ^= x >> 35;
x ^= x << 4;
Boost.Random a une variété de très bons générateurs de nombres aléatoires.
Ce code génère un nombre aléatoire unique une seule fois.
#include <ctime>
# include <iostream>
using namespace std;
int main()
{
int size=100;
int random_once[100];
srand(time(0));
for (int i=0;i<size;i++) // generate unique random number only once
{
random_once[i]=rand() % size;
for(int j=0;j<i;j++) if (random_once[j]==random_once[i]) i--;
}
for (i=0;i<size;i++) cout<<" "<<random_once[i]<<"\t";
return 0;
- 1. Générateur de nombres aléatoires Crappy
- 2. Comportement en ligne déroutant du générateur de nombres aléatoires (C++)
- 3. affichant des nombres aléatoires
- 4. Pourquoi utilisez-vous un générateur/extracteur de nombres aléatoires?
- 5. Générateur de nombres aléatoires qui produit une distribution de loi de puissance?
- 6. génération de nombres aléatoires dans un vecteur
- 7. Convertir une séquence de nombres en ID aléatoires?
- 8. Définir différents types de nombres en C#
- 9. Génération de nombres aléatoires sur Spartan-3E
- 10. Excel 2007 question sur les nombres aléatoires
- 11. Problèmes avec l'ensemencement d'un générateur de nombres pseudo-aléatoires plus d'une fois?
- 12. Génération de nombres aléatoires sans utiliser d'opérations sur les bits
- 13. Générateur de nombres pseudo-aléatoires à partir d'un nombre normal calculable
- 14. Comment obtenir un élément dans une liste <> en fonction d'un champ de nombres entiers?
- 15. comment obtenir des nombres pour avoir une précision de .05?
- 16. Est-ce une bonne ou une mauvaise façon de générer des nombres aléatoires pour chaque enregistrement?
- 17. Génération de nombres aléatoires dans chaque ligne Oracle Query
- 18. somme des nombres formatés
- 19. Comment remplir une colonne de base de données avec des nombres aléatoires
- 20. Comment utiliser les différents types de nombres dans l'objectif C
- 21. Mysql répéter des nombres incrémentaux?
- 22. Les nombres les plus fréquemment répétés dans une énorme liste de nombres
- 23. Comment formater des nombres en JavaScript?
- 24. collecter des nombres et les imprimer
- 25. Regrouper des nombres pour un histogramme
- 26. Formatage des nombres dans Scala?
- 27. Pourquoi ET deux nombres pour obtenir un booléen?
- 28. Comparaisons de nombres Java
- 29. Problèmes avec deviner un jeu de nombres
- 30. Comment concaténer des nombres et des chaînes pour formater des nombres dans T-SQL?
litb, que ferais-je sans vous! Merci beaucoup, j'ai eu le sentiment que c'était une autre erreur programmée par le programmeur "devrait mieux connaître"! – Cyprus106