begin process at 2012 05 29 19:27:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

Nombre Secret `(Probleme de Proba...)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Nombre Secret `(Probleme de Proba...)

mercredi 26 octobre 2005 à 22:02:46 | Nombre Secret `(Probleme de Proba...)

albert0

Membre Club
Bonsoir,

Voila, je suis en train de faire un algorithme, le but est est de trouve un "Nombre secret" ce nombre secret est generé par un Random:

Float:  Rand: Random()

Random donne un nombre (float) compris entre 0 et 1 

les borne pour trouver le chiffre son demandé au joueur (genre de 0 à 100..)

Pour l'example on va dire de : 0 à 10

Le probleme maintenant c'est qu'il faut que CHAQUE CHIFFRE EST LA MEME PROBABILITE D?ETRE CHOISIT...

la premiere chose qui me vien a l'esprit c'est de faire:

NbSecret = (Integer)Rand * 10

donc la j'aurai un chiffre qui se trouvera entre 0 et 10 (Compris)

mais le probleme c'est que les borne (0 et 10) on 2fois moi de chance d'etre choisi...

j'ai donc fait un ca:

NbSecret := ((10 +1)*Rand) mod (10 + 1));

avec ceci chaque chiffre a la meme probabilité detre choisit (car la on a agrandi la borne (de 10 a 11) et le mod(10+1) agrandi la borne (0)

Mais je n'ai pas le droit d'utilise Mod,
Il me faut donc une autre Equation..

et la je bloque :(

si quelqu'un pourrai me donné quelque indice?

d'avance merci

mercredi 26 octobre 2005 à 23:31:38 | Re : Nombre Secret `(Probleme de Proba...)

cosmobob

salut,
pas besoin de mod dans ton truc ...
NbSecret = (int) 11*Rand();
sachant que Rand() a une probabilité 0 de retourner 1., ton nombre est bien entre 0 et 10.
si pas de bol ca vaut 1, tu le rejettes et le retires:
int NbSecret = 11;
while (NbSecret >= 11)
{
    NbSecret = (int) 11*Rand();
}

et voila.. Le cast en int prend la partie entière du réel qui suit.

a+



jeudi 27 octobre 2005 à 09:40:32 | Re : Nombre Secret `(Probleme de Proba...)

albert0

Membre Club
Merci d'avoir répondu :)

mais maintenant si je fait ca, le 0a deux fois moi de chance d'etre chois que les autre

le seul indice que j'ai c'est qu'il faut placer quelque par "0.5"



jeudi 27 octobre 2005 à 10:59:49 | Re : Nombre Secret `(Probleme de Proba...)

cosmobob

mais non, 0 a autant de chance de sortir que les autres... la partie entiere ne déforme pas le decoupement de 0..1 en 11 parties egales!

ca donne 0, si ton Rand() est à la  base compris entre 0 et 1./11.
ca donne 1 si c'est compris entre 1./11 et 2./11
etc.
chaque nombre a un proba 1/11 de sortir suivant l'intervalle initial dans lequel tombe le Rand().

bref

jeudi 27 octobre 2005 à 20:12:05 | Re : Nombre Secret `(Probleme de Proba...)

albert0

Membre Club
hmmm nan regarde:
dison interval de 0 à 2 (compris)

0 // 0.1 // 0.2 etc... jusqu'a 2

de 0 à 0.4 = 0   ( la y a en 5)
de 0.5 à 1.4 = 1 (la 10)
de 1.5 à 2 = 2 (et la 6)

donc la 2 fois moi de chance sur le bord...

si maintenant on agrandi en faisait + 1

de 0 à 0.4 = 0   ( la y a en 5)
de 0.5 à 1.4 = 1 (la 10)
de 1.5 à 2.4 = 2 (et la 10)
de 2.5 à 3 = 3 (et la 6)

donc avec ton truc si c'est plus grand que 3, on retire?, ca ne change pas la donne, un autre chiffre sera tiréé mais les bord auron TOUJOUS DEUX FOIS MOIN D ECHANCE d etre choisit :)

en faite le rem sert en GROS a mettre tout les '3' dans les 0... (car  3 mod 3  = 0..)

mais avec Mod j'ai pas le droit...
donc on peut faire if NbSecret = 3 -> nbSecret = 0

mais c'est pas tres beau...

jje doit trouver une formule

vala


jeudi 27 octobre 2005 à 21:29:43 | Re : Nombre Secret `(Probleme de Proba...)

vladisback

salut, excuse moi mais je crois que tu te trompe et que cosmobob a raison:

quand tu fais:
NbSecret = (Integer)Rand * 10

ça ne fait pas un arrondi mais une troncation puisque tu prend la partie entiére

0 a 0.999 =0
1 a 1.999 =1

donc il y a bien le meme nobre de chance...

maintenant si tu pense que je me trompe oublie ce que j'ai dis...
++
jeudi 27 octobre 2005 à 23:30:08 | Re : Nombre Secret `(Probleme de Proba...)

albert0

Membre Club
erf, jme excuse, j'ai oublié de dire que
 
en ADA:
Integer(..) arondissait et ne tronquait pas :( 

donc 1,5 -> 2


mais effectivement si il tronquait vous aviez raisons !

vendredi 28 octobre 2005 à 01:00:29 | Re : Nombre Secret `(Probleme de Proba...)

cosmobob

lol on est sur cppfrance, pas sur un forum lié à l'ada
pour la partie entiere, cherche si ya pas une fonction qui s'appelle floor ...




Cette discussion est classée dans : nombre, chiffre, probleme, secret, borne


Répondre à ce message

Sujets en rapport avec ce message

Strcat avec un chiffre entier [ par Athanor ] Je voudrais concaténer une chaine avec un nombre entier, je sais bien questrcat(nomchaine, 123);ne marche pas, mais même en transformant mon chiffre e Generer un nombre aleatoir en C [ par Snoupy ] Salut à tous, j'ai besoin de générer plusieur nombre aleatoir, mais la source que j'utilise, m'oblige à attendre une seconde entre chaque nombre, car Probleme rand() et for [ par vanpet ] je suis nouveau en C++ (je migre de VB6) et il y a quelques petites choses que l'aide de Microsoft ne parvient pas a me faire comprendre... (pourquoi tout petit probleme tres simple ! [ par Kevb37 ] Hello,Bon, alors je commence le C depuis peu et je voudrais savoir comment enregistrer un chiffre dans un fichier sur le disque (par exemple avec fget Probleme avec un nombre a virgule [ par c2millet ] BonjourVoila mon pb je récupère la valeur d'un champ ds une bdd c un nombre a virgule.G déclaré une variable de type FLOAT ds mon prog mais je ne récu probleme de boucle... Urgent ! [ par AshenShugar ] Salut tout le monde,voila, j'ai un morceau de code qui est celui-ci :while ((Ligne 20)) { Ligne = 0; printf("\nSaisissez le nombre de lignes Sélectionner un chiffre dans un nombre ? [ par Telepathmaster ] Bonjour, j'aimerai savoir si il est possible de décomposer un nombre comme 21365489 de façon à pouvoir  avoir le premier chiffre de ce nombre ou le de probleme [ par jekburn ] #includeint main(){bonjour,je voudrais savoir pourquoi quand je tape 10, ça ne me met pas A, et en plus j'obtiens des carrés et d'autres formes, quand probleme d'allocation dynamique de la memoire en C [ par dletozeun ] Bonjour,Je developpe sous devcpp et dans ce prog je créé un tableau de sommets de taille variable que j'affiche avec opengl.la structure d'un sommet e Probleme ....... [ par miximog ] Bonjour,  je vais éssayez d'etre claire en faite voici mon problème je voudrai que mon programme soit totalement paramétrable par l'uttilisateur jusqu


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales