• 23 Avril 2025, 18:56:01


Auteur Sujet: Question sur "random"  (Lu 1405 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne MrJunki

  • *
  • Criminel
  • Messages: 27
    • Voir le profil
Question sur "random"
« le: 10 Juillet 2011, 23:11:33 »
Bonsoir,

J'aurai une question concernant "random", d'après ce que je sais et que j'ai compris random tire un nombre donner au hasard.
Ma question peut-on tirer ce nombre qu'une seule fois ? exemple

Dans random(899999); j'obtiens 48989, si la fonction est réutiliser comment peut-on faire pour ne pas ré-avoir 48989 ?
Ou existe t-il une autre fonction du même genre que celui-ci ?

Merci.

Qui craint de souffrir, souffre déjà de ce qu'il craint.

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Question sur "random"
« Réponse #1 le: 10 Juillet 2011, 23:27:53 »
Salut,

La variable à laquelle tu affectes ton random doit être locale, comme ça elle change à chaque fois (Car elle est détruite).

Après, en tout cas je ne sais pas si la valeur ne change pas (J'avais eu ce problème en VB quand j'ai commencé)

Si tu fais quelque chose de ce genre :


new random 0;

CMD:randomnumber(playerid,params[])
{
     
random random(8999999);
     return 
1;
}


la variable devrait changer à chaque fois que la commande est tapée  ;)

++

Hors ligne MrJunki

  • *
  • Criminel
  • Messages: 27
    • Voir le profil
Re : Question sur "random"
« Réponse #2 le: 10 Juillet 2011, 23:38:29 »
La random que je veut va être enregistrer dans les stats du joueur et sera la clef du véhicule.
Donc le joueur achète le véhicule et on lui donne la clef du véhicule qui sera un nombre aléatoire (exemple : random(89999)), c'est pour cela qu'il ne faut pas que le random ne sort pas un nombre qu'il a déjà sortit auparavant et je n'est pas la possibilité d'aller chercher les nombre qu'il a déjà sortit.
Qui craint de souffrir, souffre déjà de ce qu'il craint.

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Question sur "random"
« Réponse #3 le: 10 Juillet 2011, 23:41:54 »
dans ce cas je voit ce que tu veut dire enfaite j'ai etait pris au meme probleme avec mon histoire de code ping pour mon fs de voiture enfaite voila ce que je te propose

printf("%d%d%d%d%d",random(9),random(9),random(9),random(9),vehicleid);

dans ce cas la tu n'auras jamais le meme numeros de serie ;)
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne MrJunki

  • *
  • Criminel
  • Messages: 27
    • Voir le profil
Re : Question sur "random"
« Réponse #4 le: 10 Juillet 2011, 23:50:41 »
Mais si mes véhicules ne sont pas static (qu'il ne garde pas leur id tout le temps) ?
Qui craint de souffrir, souffre déjà de ce qu'il craint.

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Question sur "random"
« Réponse #5 le: 10 Juillet 2011, 23:55:51 »
c'est pas grave c'est juste pour generé le code de demarrage au joueur
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne MrJunki

  • *
  • Criminel
  • Messages: 27
    • Voir le profil
Re : Question sur "random"
« Réponse #6 le: 10 Juillet 2011, 23:59:05 »
Le nombre ne sera jamais pareil ?
Qui craint de souffrir, souffre déjà de ce qu'il craint.

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Question sur "random"
« Réponse #7 le: 11 Juillet 2011, 00:03:19 »
exactement
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne MrJunki

  • *
  • Criminel
  • Messages: 27
    • Voir le profil
Re : Question sur "random"
« Réponse #8 le: 11 Juillet 2011, 00:08:35 »
Merci  :)
Qui craint de souffrir, souffre déjà de ce qu'il craint.

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Question sur "random"
« Réponse #9 le: 11 Juillet 2011, 03:35:45 »
Salut,

je suis désolé, mais il ne faut jamais dire jamais, surtout dans ce cas ci!

un nombre choisi au hasard est un nombre choisi au hasard, et en tant que tel, un nombre pigé précédemment peut l'être de nouveau...

Pour éviter les répétitions, il te faudrait vérifier tous les numéros déjà sortis et les comparer avec la nouvelle valeur pour en être sur...calcul relativement long avec de grand volumes.

Tu pourrais simplement utiliser un nombre qui indique à quel ID tu est rendu et incrémenter le tout à chaque utilisation, ainsi tu aura des ID uniques sans trop de difficulté (tu commence à 0, puis tu monte à 1, puis 2 etc).

ps.
Même si deux véhicules avaient la même clef, es-ce très grave?
Un autre joueur n'a pas plus de chance de deviner ta clef, comment pourrait il le savoir?
Bref avec random(99999), tu ne devrais pas avoir trop de problèmes.

pps.
Utiliser plusieurs random comme cristab le suggère n'est pas mieux qu'un seul.
Que ce soit avec random(9) * 1000 + random(9) * 100 + random(9) * 10 + random(9) ou random(9999), les résultats devraient être très similaires.

++Sim++





Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Question sur "random"
« Réponse #10 le: 11 Juillet 2011, 10:22:18 »
regarde mieux mon printf enfaite car a la fin je met l'id du vehicule et la il ne peu pas y avoir deux fois la meme id ;)
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Question sur "random"
« Réponse #11 le: 11 Juillet 2011, 17:03:14 »
Effectivement, je rejoins l'idée de Sim.
Il est effectivement mieux d'incrémenter un nombre choisie que de faire une génération de nombre aléatoire (qui n'est pas réellement aléatoire) et de comparer chaque résultat un à un.

Hors ligne MrJunki

  • *
  • Criminel
  • Messages: 27
    • Voir le profil
Re : Question sur "random"
« Réponse #12 le: 12 Juillet 2011, 23:43:06 »
Au final j'ai rajouter une variable qui s'appelle "DernierId Clef" et a chaque foi qu'une personne dois avoir sa clef je rajoute +1 a la variable, je donne la clef au joueur et je l'enregistre dans un fichier.

Merci de votre aide.
Qui craint de souffrir, souffre déjà de ce qu'il craint.