Algo de generation de nombres aleatoires ?

Algo de generation de nombres aleatoires ? - C++ - Programmation

Marsh Posté le 12-02-2003 à 23:09:40    

J'essaie de porter une appli ecrite en Borland C++ 3.1 vers Java. Cette appli fait beaucoup appel a des nombres aleatoires (srand() pas au hasard choisi puis random()), et il faudrait que je fasse en Java un petit generateur de nombres aleatoires qui suive exactement la meme logique que celui qui se trouve dans BC++ ... et evidemment, ce n'est pas le cas du Random() Java propose par defaut.
 
Est-ce aue quelqu'un connaitrait l'algo qui est utilise par les fonctions srand() et random() dans Borland C++ 3.1 ??

Reply

Marsh Posté le 12-02-2003 à 23:09:40   

Reply

Marsh Posté le 12-02-2003 à 23:16:34    

http://www.google.fr/search?q=rand [...] l=fr&meta=


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 12-02-2003 à 23:21:52    

Merci, mais je veux pas un générateur de nombres aléatoires (celui utilisé dans Java est décrit en clair), je veux celui de Borland C++ :sarcastic:  
 
PS : tiens, www.google.fr, je connaissais pas comme site, c'est pas mal :sarcastic:


Message édité par Gonzoide le 12-02-2003 à 23:23:01
Reply

Marsh Posté le 12-02-2003 à 23:30:57    

tu prends softice et tu désassembles la fonction rand()  :kaola:  
pourquoi veux tu absolument l'algo de BC++ ???
un nombre aléatoire est un nombre aléatoire après tout !!
 
ça m'apprendra à rendre service tiens !!! :fou:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 12-02-2003 à 23:32:47    

Gonzoïde a écrit :

Merci, mais je veux pas un générateur de nombres aléatoires (celui utilisé dans Java est décrit en clair), je veux celui de Borland C++ :sarcastic:  
 
PS : tiens, www.google.fr, je connaissais pas comme site, c'est pas mal :sarcastic:


 
je sais que par le passé, borland donnait le code source des ces compilos et libs à ceux qui en faisaient la demande par courrier papier; RAV avec du GPL.
 
Sinon si tu veux vraiment apprendre quelque chose va voir là http://random.mat.sbg.ac.at/literature/
 
NB: prends un ton moins méprisant c'est plus sympa pour ceux qui répondent à tes questions  [:zebra33]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 12-02-2003 à 23:35:03    

Harkonnen a écrit :

pourquoi veux tu absolument l'algo de BC++ ???
un nombre aléatoire est un nombre aléatoire après tout !!


 
L'appli a ete specifiquement concue pour etre compilee sous Borland (c'est degueu mais c'est comme ca), car elle s'est rendue dependante de la maniere dont les nombres aleatoires sont calcules. Si je veux generer les memes suites aleatoires en partant des memes racines, faut que je connaisse l'algo utilise dans BC++, c'est tout. En clair : je ne veux pas des nombres aléatoires, je veux les mêmes suites que celles utilisées dans l'appli ...
 

Harkonnen a écrit :

ça m'apprendra à rendre service tiens !!! :fou:


 
Ca t'apprendra surtout a claquer du www.google.fr sans avoir lu la question (je l'avais pourtant formulee precisement pour eviter ce genre de remarque ...)


Message édité par Gonzoide le 12-02-2003 à 23:35:58
Reply

Marsh Posté le 12-02-2003 à 23:37:39    


:jap:

SchnapsMann a écrit :

NB: prends un ton moins méprisant c'est plus sympa pour ceux qui répondent à tes questions  [:zebra33]


Ca me gonfle quand on repond "google" sans prendre le temps de reflechir deux secondes ...

Reply

Marsh Posté le 12-02-2003 à 23:42:18    

Heu, là Harko, t'exagère un peu !
 
La question de Gonzoïde était très claire dés le début.
 
Il n'a pas besoin d'un générateur quelconque, il à besoin d'un générateur bien particulier. Je ne sais pas si c'est pour faire une lotterie truquée :D, mais c'est pas le problème.
 
Si tu répond à coté de la question parce-que t'as mal lu, et si en plus tu lui balance un lien vers google, genre "c'est pas un moteur de recherche içi", faut pas t'étonner qu'il te renvoie la balle non ?
 
T'inquiète pas Gonzoïde, Harko est parti ce coucher. Il ne mord plus ce soir  :lol:


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 12-02-2003 à 23:48:00    

Mara's dad a écrit :

Heu, là Harko, t'exagère un peu !
 
La question de Gonzoïde était très claire dés le début.


 
Tiens, quelqu'un qui me comprend ... je commencais a avoir des doutes sur mon niveau en francais :D
 
Pis c'est pas pour une loterie c'est pour craquer le mot de passe du root de la NASA (et du FBI si j'ai le temps), qui comme chacun le sait tourne sur des serveurs Windows 3.11 -> d'ou le compilo C++ 16 bits des familles :D
 
(en fait c'est pour porter un jeu type "Elite", les nombres aleatoires servent a positionner des planetes, et forcement j'aimerais bien qu'elles correspondent a l'original, d'ou ma quete du generateur aleatoire qui va bien ...)


Message édité par Gonzoide le 12-02-2003 à 23:49:01
Reply

Marsh Posté le 12-02-2003 à 23:49:44    

Gonzoide > pas de bol, meme si j'admets ne pas avoir tout lu, j'admets aussi que le site que tu détestes tant, tu sais, google (qui référence aussi les NG faudrait pas l'oublier), ben ce site m'a permis de trouver ce que tu cherches !
 
http://groups.google.com/groups?hl [...] fe0&rnum=3
 
juste l'algo que tu cherches ! on en fait des choses avec google dis moi...  :sarcastic:  
 
et ça m'a pris 10 secondes...
 
mara > un harko endormi mord toujours :d


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 12-02-2003 à 23:49:44   

Reply

Marsh Posté le 12-02-2003 à 23:53:34    

Harkonnen a écrit :

Gonzoide > pas de bol, meme si j'admets ne pas avoir tout lu, j'admets aussi que le site que tu détestes tant, tu sais, google (qui référence aussi les NG faudrait pas l'oublier), ben ce site m'a permis de trouver ce que tu cherches !


:jap: j'avoue humblement ma defaite, je savais pas pour les NG dans Google (que j'aime beaucoup en passant)
 
PS : juste pour info, t'as donne quoi comme critere ? (parce que je me suis sincerement casse les dents sur Google -> pas mal de recherche et pas de resultat)

Reply

Marsh Posté le 12-02-2003 à 23:53:43    

Bon, ben j'suis bien content pour tout le monde.
 
Ca fait plaisir, encore un problème résolu.
 
Qui veux du Champagne ?
 
Pour moi, ce sera un t'ite bière de chez nos amis belges.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 12-02-2003 à 23:55:31    

je serais pas contre une petite Guinness ...

Reply

Marsh Posté le 12-02-2003 à 23:58:53    

Gonzoïde a écrit :

PS : juste pour info, t'as donne quoi comme critere ? (parce que je me suis sincerement casse les dents sur Google -> pas mal de recherche et pas de resultat)


http://harko.free.fr/images/google.PNG


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-02-2003 à 00:05:47    

ah ben c'est pour ca, les groupes google j'y ai jamais mis les pieds :(
 
Merci quand meme :)

Reply

Marsh Posté le 13-02-2003 à 00:15:56    

y'a pas les codes sources avec Borland ?
(vraie question c'est pas de la provoc, je dis ça pour
ceux qui sont nerveux)
 
LeGreg


---------------
voxel terrain render engine | animation mentor
Reply

Marsh Posté le 13-02-2003 à 00:27:08    

legreg a écrit :

y'a pas les codes sources avec Borland ?
(vraie question c'est pas de la provoc, je dis ça pour
ceux qui sont nerveux)
 
LeGreg


 
cf mon post
 
mais je ne sais pas s'il le font toujours


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 13-02-2003 à 00:37:20    

legreg a écrit :

y'a pas les codes sources avec Borland ?
(vraie question c'est pas de la provoc, je dis ça pour
ceux qui sont nerveux)
 
LeGreg


 
Y'a pas besoin d'etre nerveux : le compilo est gratos en version 5.5, et le pire c'est que je l'ai meme pas encore downloade :D

Reply

Marsh Posté le 13-02-2003 à 00:42:47    

SchnapsMann a écrit :


cf mon post
mais je ne sais pas s'il le font toujours


 
chez Microsoft tu as les sources de toute la lib C
et C++ evidemment
je pense que c'est la moindre des choses chez un  
fournisseur de compilateur de livrer sa lib standard
(pour qu'on puisse savoir avec quoi l'on builde ses  
exécutables)
 

Code :
  1. int __cdecl rand (
  2.         void
  3.         )
  4. {
  5. #ifdef _MT
  6.         _ptiddata ptd = _getptd();
  7.         return( ((ptd->_holdrand = ptd->_holdrand * 214013L
  8.             + 2531011L) >> 16) & 0x7fff );
  9. #else  /* _MT */
  10.         return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
  11. #endif  /* _MT */
  12. }


 
LeGreg


---------------
voxel terrain render engine | animation mentor
Reply

Marsh Posté le 14-02-2003 à 06:15:01    

Gonzoïde a écrit :


(en fait c'est pour porter un jeu type "Elite", les nombres aleatoires servent a positionner des planetes, et forcement j'aimerais bien qu'elles correspondent a l'original, d'ou ma quete du generateur aleatoire qui va bien ...)


 
 :pfff:  


---------------
You have the right to remain silent. You are warned that anything you say can will be taken down used as evidence against you///Il n'y a pas de théorie de l'évolution. Juste une liste d'espèces que Chuck Norris autorise à survivre.
Reply

Marsh Posté le 14-02-2003 à 16:56:31    


 
Ben quoi :??: :??:
 

Reply

Marsh Posté le 14-02-2003 à 20:59:30    

Aleatoire != predefini (mais je suppose qu'il sagit d'autre chose car je ne comprends toujours pas pourquoi il te faut celui la en particulier, sauf si tu as choisi un mauvais rand du style celui du c standard)


---------------
You have the right to remain silent. You are warned that anything you say can will be taken down used as evidence against you///Il n'y a pas de théorie de l'évolution. Juste une liste d'espèces que Chuck Norris autorise à survivre.
Reply

Marsh Posté le 15-02-2003 à 01:10:23    

Pseudo-aléatoire.
 
Ça a tout du hasard pour le joueur, mais c'est reproductible pour le programme.
 
Tu n'a jamais eu un jeu ou selon la graine (seed) spécifiée au départ le décor était complètem différent ?


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 15-02-2003 à 02:41:47    

Ah, je n'avais pas vu ca sous cet angle de la graine fournie (et disponible? Le source est dispo?). Si c'est bien fait normalement la graine fournie n'est pas reproductible (exemple seed = time). D'ou des suites de nombres pseudo-aleatoires (avec des bons algos ce n'est plus pseudo-) totalement differentes et donc bel et bien aleatoires dans le principe. D'ou ma perplexite quand a l'utilite de rechercher strictement le meme generateur.


Message édité par Angel_Dooglas le 16-02-2003 à 00:58:39

---------------
You have the right to remain silent. You are warned that anything you say can will be taken down used as evidence against you///Il n'y a pas de théorie de l'évolution. Juste une liste d'espèces que Chuck Norris autorise à survivre.
Reply

Marsh Posté le 15-02-2003 à 18:16:25    

Angel_Dooglas a écrit :

Ah, je n'avais pas vu ca sous cet angle de la graine fournie (et disponible? Le source est dispo?). Si c'est bien fait normalement la graine fournie n'est pas reproductible (exemple seed = time). D'ou des suites de nombres pseudo-aleatoires (avec des bons algos c'est plus pseudo-) totalement differentes et donc bel et bien aleatoires dans le principe. D'ou ma perplexite quand a l'utilite de rechercher strictement le meme generateur.


 
oui, graine fournie et code dispo -> je repete donc la meme sequence si j'utilise le meme algo (ce qui me manquait jusqu'a present)

Reply

Marsh Posté le 16-02-2003 à 01:00:35    

Ils utilisent une graine "statique" (ou un tableau de valeurs fixees)?


---------------
You have the right to remain silent. You are warned that anything you say can will be taken down used as evidence against you///Il n'y a pas de théorie de l'évolution. Juste une liste d'espèces que Chuck Norris autorise à survivre.
Reply

Marsh Posté le 16-02-2003 à 23:48:56    

Ben en fait, c'est ni statique, ni tableau de valeurs fixees. C'est : pour creer les etoiles dans le systeme de coordonnees (x, y, z), initialise le generateur aleatoire par x*y*z :)

Reply

Marsh Posté le 17-02-2003 à 00:42:01    

mmmh, je crois que j'aimerais bien jeter un oeil a ce code ca commence a m'intriguer, le x y z c'est fourni par l'utilisateur?


---------------
You have the right to remain silent. You are warned that anything you say can will be taken down used as evidence against you///Il n'y a pas de théorie de l'évolution. Juste une liste d'espèces que Chuck Norris autorise à survivre.
Reply

Marsh Posté le 17-02-2003 à 07:15:12    

Angel_Dooglas a écrit :

(avec des bons algos ce n'est plus pseudo-)

Du moment que c'est calculé ça reste "pseudo", prédictible et reproductible.
 
Pour du "vrai" non-déterministe, il faut un dispositif spécial genre amplificateur de parasites.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 17-02-2003 à 14:12:55    

Quand on arrive a ce genre de resultat:

Citation :

# Far longer period and far higher order of equidistribution than any other implemented generators. (It is proved that the period is 2^19937-1, and 623-dimensional equidistribution property is assured.)


http://www.math.keio.ac.jp/~matumoto/emt.html
 
Pseudo devient facultatif dans la pratique courante.
Un amplificateur de parasites ne me parait pas specialement plus sur.


---------------
You have the right to remain silent. You are warned that anything you say can will be taken down used as evidence against you///Il n'y a pas de théorie de l'évolution. Juste une liste d'espèces que Chuck Norris autorise à survivre.
Reply

Marsh Posté le 17-02-2003 à 14:16:07    

Angel_Dooglas a écrit :

mmmh, je crois que j'aimerais bien jeter un oeil a ce code ca commence a m'intriguer, le x y z c'est fourni par l'utilisateur?


 
Ben non, c'est tout couillon: Y'a un systeme solaire par secteur, represente par ses coordoonnees x, y, z. Pour connaitre le contenu du secteur (x, y, z), tu initialises le generateur a x*y*z, puis tu generes:
 
type de l'etoile = random()
nombre de planetes = random()
pour chaque planete, type de planete = random(), nombre de lunes = random(), etc etc.
 
Tu fais ca pour chacun des secteurs que tu veux afficher a l'ecran, et voila.

Reply

Marsh Posté le 19-02-2003 à 23:09:10    

Angel_Dooglas a écrit :

Quand on arrive a ce genre de resultat:

Citation :

# Far longer period and far higher order of equidistribution than any other implemented generators. (It is proved that the period is 2^19937-1, and 623-dimensional equidistribution property is assured.)


http://www.math.keio.ac.jp/~matumoto/emt.html
 
Pseudo devient facultatif dans la pratique courante.

Si tu l'initialise avec la même graine, il produit les mêmes résultats.
Il reste pseudo-aléatoire, ce qui ne veut pas dire mauvais.
 
Ce qui m'impressionne, c'est d'avoir une période de 2^19937-1 sans stocker un état de 2^19937 bits...
Je suppose qu'il stocke les quelques derniers résultats, et qu'il calcule de façon à ne pas retomber sur une configuration déjà donnée.
 
 

Citation :

Un amplificateur de parasites ne me parait pas specialement plus sur.

Un parasite, c'est une fluctuation non voulue.
Ces fluctuations infimes non voulues engendrent le vrai aléatoire en rendant impossible toute prévision par calcul, car incalculables.
Alors que le pseudo-aléatoire peut être prévu si l'on a l'algorithme et son état courant.
 
Des parasites amplifiés: la neige de la télé. Si ça c'est pas aléatoire...


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 19-02-2003 à 23:25:08    

Citation :

Des parasites amplifiés: la neige de la télé. Si ça c'est pas aléatoire...


 
si tu regardes bien, tu verras le visage de Jesus.
 
Si ca ce n'est pas la main de dieu..
 
LeGreg


---------------
voxel terrain render engine | animation mentor
Reply

Marsh Posté le 19-02-2003 à 23:42:10    

Et comme Dieu ne joue pas aux dés, ce n'est donc pas aléatoire.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 19-02-2003 à 23:44:25    

Mara's dad a écrit :

Et comme Dieu ne joue pas aux dés, ce n'est donc pas aléatoire.

Citation :

"God is REAL, until explicitly declared INTEGER." Dijkstra

Reply

Marsh Posté le 20-02-2003 à 17:10:40    

Musaran a écrit :

Si tu l'initialise avec la même graine, il produit les mêmes résultats.
Il reste pseudo-aléatoire, ce qui ne veut pas dire mauvais.
 
Ce qui m'impressionne, c'est d'avoir une période de 2^19937-1 sans stocker un état de 2^19937 bits...
Je suppose qu'il stocke les quelques derniers résultats, et qu'il calcule de façon à ne pas retomber sur une configuration déjà donnée.
 
 

Citation :

Un amplificateur de parasites ne me parait pas specialement plus sur.

Un parasite, c'est une fluctuation non voulue.
Ces fluctuations infimes non voulues engendrent le vrai aléatoire en rendant impossible toute prévision par calcul, car incalculables.
Alors que le pseudo-aléatoire peut être prévu si l'on a l'algorithme et son état courant.
 
Des parasites amplifiés: la neige de la télé. Si ça c'est pas aléatoire...


 
1/ Il ne faut jamais initialiser un generateur avec une graine "constante" d'un appel a l'autre. Toujours utiliser une graine (l'important etant que cela ne soit jamais la meme d'un appel a l'autre de maniere a ne "jamais" retomber sur la meme suite generee); comme je l'ai donne au dessus, l'astuce classique est d'employer la variable de temps comme graine. Quand au fonctionnement du Mersenne Twister, il faut lire l'article (le code est un *peu* chaud a etudier sans savoir ce qu'il fait).
 
2/Bien sur que les parasites c'est de la variable aleatoire  mais il n'y pas que cela qui compte: il faut faire aussi attention a la distribution de cette variable: Les phenomenes physiques/chimiques/biologiques suivent rarement des lois uniformes.


---------------
You have the right to remain silent. You are warned that anything you say can will be taken down used as evidence against you///Il n'y a pas de théorie de l'évolution. Juste une liste d'espèces que Chuck Norris autorise à survivre.
Reply

Marsh Posté le 20-02-2003 à 20:20:35    

Mara's dad a écrit :

Et comme Dieu ne joue pas aux dés, ce n'est donc pas aléatoire.


 
prière de ne pas ressortir les conneries d'einstein :sarcastic:  
 
 
il a dit plein de trucs intelligents, pourquoi tjrs ressortir cette boulette?   :pfff:


Message édité par schnapsmann le 20-02-2003 à 20:20:59

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 21-02-2003 à 01:33:00    

[Einstein]
C'est pas une boulette !
 
C'est de la remise en question.
 
Une attitude tout ce qu'il y a de plus louable pour un scientifique, non ?
 
Dans le même genre :
 
"If the facts don't fit the theory, change the facts."
 
A ne pas prendre au premier degrès non plus, hein  :D  
[/Einstein]


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed