C++ | Génération d'un nombre pseudo entre 10 et 20
J'ai fais un texte basé sur C++ RPG et je suis à essayer de comprendre comment travailler sur la quantité de dégâts que l'ennemi vous frappe. Mon idée, c'est quelque chose comme cela.
Dommages causés = randomIntBetween10and20*enemyLevel
De cette manière, il n'est pas toujours frapper pour un montant fixe à chaque fois et permet-il d'être coups Critiques (Par exemple, si le succès est au-dessus de 15 ans, je classe comme un coup Critique)
Je suis novice en C++ donc je ne suis pas tout à fait sûr de savoir comment je peux faire cela, toute aide serait grandement appréciée.
Est votre problème de la génération de nombres aléatoires? Jetez un oeil ici: stackoverflow.com/questions/3786389/...
Ahhh, je vois. Merci.
Est-il mauvais que j'ai lu RPG comme Grenade Propulsée par Fusée?
ONeal, c'est pas mal du tout... c'est à base de texte. Au moins, le combattant va subir de graves ASCII blessures.
Avez-vous vraiment dire VRAIMENT? Si donc, vous devez être VÉCU BEAUCOUP de choses avec le C++. À l'aide du microphone de bruit peut être rentable 🙂
Ahhh, je vois. Merci.
Est-il mauvais que j'ai lu RPG comme Grenade Propulsée par Fusée?
ONeal, c'est pas mal du tout... c'est à base de texte. Au moins, le combattant va subir de graves ASCII blessures.
Avez-vous vraiment dire VRAIMENT? Si donc, vous devez être VÉCU BEAUCOUP de choses avec le C++. À l'aide du microphone de bruit peut être rentable 🙂
OriginalL'auteur Luke Berry | 2010-12-10
Vous devez vous connecter pour publier un commentaire.
Vous devez omettre le mot "vraiment" dans le titre, parce que vous n'avez probablement pas dire que c'. Vous voulez probablement seulement une pseudo nombre. Vrai le hasard est pratiquement impossible à obtenir avec un ordinateur personnel. L'extrait de code suivant vous donnera un nombre pseudo-aléatoire dans la plage de 10..19 inclusive:
Si vous souhaitez inclure 20 dans la plage, alors c'est une gamme de 11 numéros:
Au moins celui-ci mentionne la différence. +1
Tout à fait quelques Pc en fait un flux d'entrées aléatoires basé sur le bruit thermique, qui comprend le vrai caractère aléatoire. Voir en.wikipedia.org/wiki/Hardware_random_number_generator
Vous avez de demander spécifiquement pour eux. La fonction rand() est pseudo-aléatoire.
n'oubliez pas. Seulement appeler srand() dans une application.
OriginalL'auteur wilhelmtell
Un bon choix serait
std::random
, le générateur de nombre aléatoire qui est intégré à C++.Si vous n'avez pas de C++11 et pourtant,
boost::random
. La nouvellestd::random
est basé surboost::random
, donc, c'est essentiellement la même chose. La documentation a plusieurs exemples, y compris Générer des nombres entiers dans une gamme.L'une des options proposées est le Mersenne Twister (
mt19937
), ce qui est une bonne usage général générateur de nombres pseudo aléatoires.Comme la plupart des autres suggestions, c'est de la pseudo-aléatoire. Pour obtenir de l'aléatoire véritable est plus difficile—mais vous n'avez pas besoin de cela pour un RPG, non? (Pour le chiffrement puissant de nombres aléatoires, envisager OpenSSL ou, sur Windows, CryptoAPI.)
Meh, c'est fermer. Que diriez-vous, “version à venir?” J'utilise
std::random
tout le temps dans MSVC et je saisgcc
4.5 prend en charge aussi.OriginalL'auteur Nate
La stdlib générateur de nombre aléatoire serait un bon endroit pour commencer:
Finalement, vous aurez envie de commencer à utiliser un plus aléatoire RNG. Jeu de Codage Complète a un assez décent pour commencer.
Notez que
srand
devrait être appelé une FOIS et plus jamais! (Pas tout le temps)Hate de le rompre pour vous, mais vous êtes incorrect. Il est à seulement 1 connu true random number generator "algorithme" (j'utilise ce terme vaguement) que nous avons trouvé jusqu'à présent. Toute autre solution de logiciel est pseudo-aléatoire à des degrés divers. Juste parce qu'un générateur de nombres pseudo aléatoires est meilleur qu'un autre, n'est pas vraiment au hasard: en.wikipedia.org/wiki/...
L'random.org le site n'est pas une solution logicielle.
Vrai caractère aléatoire ne peut pas être calculé. Donc, à moins qu'un PC standard a une façon de mesurer certains phénomènes physiques (pour obtenir l'entropie) que je ne suis pas au courant de /dev/random doit calculer un randm nombre et en tant que tel est un PRNG et n'est donc pas vraiment au hasard.
OriginalL'auteur Zac Howland
Comme les autres ont dit, peut-être rand() sera vraiment suffisant pour vous.
Ce qui est important est la semence utilisée pour initialiser le générateur de nombre pseudo-aléatoire ( l'appel à srand() est la semence)
Mais attention, le Vrai Chaos qui ne veut pas dire que vous avez exactement la même chance de générer une possible sortie aléatoire.
Il y a dix ans, j'ai joué avec stochastique de production du son.
J'ai besoin de plusieurs sources de chaos.
Je viens de le laisser vous savez ceux dont j'avais gardé et a trouvé utile. bien sûr, depuis qu'ils ont besoin d'une graine, ils sont pseudo chaos.
1/chaotique nombre à virgule entre -1 et 1: calcul de la fonction f(x) = cos(exp(x)). exp() grandit tellement vite, qu'après avoir vraiment quelques itération, ce qui se passe hors de chez cos() est le chaos.
2/le boulanger transformer: chaotique nombre entre 0 et 1: prendre un nombre, le multiplier par deux, et encore, lorsqu'il est supérieur à 1, il suffit de soustraire quelque chose qu'elle remonte entre 0 et 1. Un beaucoup plus précis explication Le Boulanger Transformer.
Mais je pense que rand() et srand() saura vous satisfaire.
Pour l'application pour votre gamme de 10 à 20, bien sûr, vous étirer et à l'échelle du chaos de gamme (0;1) ou (-1;1) par multiplication et de la compensation, de sorte que la sortie correspond à votre besoin. 😉
OriginalL'auteur Stephane Rolland
La méthode qui utilise le module (
%
) n'est pas un bon choix parce que la distribution est à l'arrêt. C'est mieux:Vous aurez besoin d'inclure
algorithm
et de la graine du générateur avecsrand
.Bien sûr, c'est seulement pseudo-aléatoire. Vous ne serez pas en mesure d'obtenir véritablement les résultats aléatoires, en particulier avec
rand
.Quel est le problème avec elle? Je suis prêt à le corriger, mais je ne suis pas sûr que le problème est.
Jamais l'esprit, j'ai trouvé le problème.
OriginalL'auteur Maxpm
La seule façon de "générer" un véritablement nombre aléatoire est à travers l'interaction avec certains facteur de l'environnement qui est aléatoire. Ce site web fournit un service qui n'est que pour vous: http://www.random.org/
OriginalL'auteur Crazy Eddie
Utiliser srand() pour initialiser le générateur de nombre aléatoire:
http://www.cplusplus.com/reference/clibrary/cstdlib/srand/
Puis utilisez le
rand()
fonction pour générer une séquence de nombres aléatoires.http://www.cplusplus.com/reference/clibrary/cstdlib/rand/
Roberts: donc, pour un RPG devons-nous aller avec crypto-safe Rng? <_<
D'accord, mais ne faudrait-il pas commencer à attaquer avec un couteau, plutôt que d'un niveau 5 hache de guerre?
Ajouter srand() pour un +1. Pas Ou de sable(). srand() et rand() doivent être utilisés ensemble.
Remercie de votre aide Martin. Merci!!!! Avoir un grand week-end.
OriginalL'auteur John
Ce lien doit vous aider à générer des nombres aléatoires à l'intérieur d'une limite dans C++
http://www.codeguru.com/forum/showthread.php?t=378879
Roberts: sur sane systèmes/bibliothèques, la fonction rand() est liée à un pool d'entropie, de les nourrir avec des bits aléatoires de l'environnement. winrar pour la grande majorité des cas, même la plupart des crypto tâches. certainement suffisamment aléatoire pour un jeu.
Tu veux dire rand() de la bibliothèque C, ou une autre méthode aléatoire?
OriginalL'auteur ckv
regardez cela, il pourrait être utile:
OriginalL'auteur user2808359