Bonjour,
La fonction rand() bien connue (qui revoie un nombre aléatoire entre 0 et 2^32) a un comportement surprenant lorsqu'elle est utilisée avec Scilab.
En est-il de même avec Mathlab, Oscar, R ?
Qu'en pensez-vous ?
-----
Bonjour,
La fonction rand() bien connue (qui revoie un nombre aléatoire entre 0 et 2^32) a un comportement surprenant lorsqu'elle est utilisée avec Scilab.
En est-il de même avec Mathlab, Oscar, R ?
Qu'en pensez-vous ?
Ca veut dire quoi "surprenant"?
Le bon moyen de le voir est de faire une simulation avec rand compilé avec C/C++, PHP, Excel ou je ne sais quel autre langage, d'observer la répartition et de faire une simulation identique avec Scilab et de comparer les résultats.
En effet c'est surprenant car, normalement, rand() retourne aléatoirement un nombre compris entre 0 et 1 : voir http://www.scilab.org/fr/content/dow...b_debutant.pdf
Pourquoi 2^32 ?
Le nombre compris entre 0 et 2^32 est la définition habituelle de rand().
Si on veut un nombre compris entre 0 et 1, il suffit de renvoyer un float ou un double égal à la valeur retournée par rand() divisée par RAND_MAX qui vaut, sauf modification, 2^32 -1.
Mais le problème n'est pas là, c'est la répartition des valeurs retournées par Scilab.rand() qui est surprenante.
Ton document n'est pas vraiment explicite sur la définition de rand(). L'aide en ligne est beaucoup plus complète, mais il manque une précision importante, et seule une simulation comparative peut la mettre en évidence.
Je pense que ça dépend des logiciels, des langages.
Certes la petite documentation n'est pas trop loquace << rand() retourne un nombre réel pris aléatoirement entre 0 et 1. >>.Mais le problème n'est pas là, c'est la répartition des valeurs retournées par Scilab.rand() qui est surprenante.
Ton document n'est pas vraiment explicite sur la définition de rand(). L'aide en ligne est beaucoup plus complète, mais il manque une précision importante, et seule une simulation comparative peut la mettre en évidence.
Cela sous-entend évidemment que les tirages suivent une loi uniforme sur [0,1]. Ce n'est pas le cas ?
Par ailleurs, la fonction rand() de Scilab peut créer des tirages qui suivent la loi normale centrée réduite (voir l'option "normal" de rand ).
Quelle précision importante manque-t-il dans la doc en ligne ? Tu voudrais voir l'algorithme implémenté dans rand() ?
Dernière modification par leon1789 ; 28/06/2013 à 22h00.
Je parle naturellement de la fonction rand() sans précision supplémentaire. Donc, ma question est simple :
la fonction rand() telle qu'elle est utilisée dans les logiciels tels que C/C++, PHP, Delphi etc. renvoie une nombre aléatoire dans un intervalle donné [0;2^32[ ou [0;1[, c'est à dire que la loi est uniforme. Ceci ne fait de doute pour personne.
Qu'en est-il de la fonction rand() utilisée dans Syslab ?
Produisent-elles les mêmes choses avec les mêmes hypothèses, c'est à dire les hypothèses de base de rand(), au facteur multiplicatif près ? Ceci est ma question.
Qu'entends-tu par ?
Donc l'appel par défaut, sous-entend la loi uniforme, comme rand() de base, c'est ce que tu veux dire ?Cela sous-entend évidemment que les tirages suivent une loi uniforme sur [0,1]. Ce n'est pas le cas ?
Quel est le lien entre
ma question "aléatoire" ET - OU "uniforme", c'est pareil ? c'est différents ? les résultats sont pareils ou différents ? quelle est leur répartition ?Certes la petite documentation n'est pas trop loquace << rand() retourne un nombre réel pris aléatoirement entre 0 et 1. >>.
Je sais très bien où tu veux en venir, mais essaye au moins, pour une fois, d'être de bonne foi. Ici on est dans le forum informatique et pas dans le forum Math.
Pour conclure, as-tu fait des essais ou simplement tu essayes d'argumenter ?
Tu poses beaucoup de questions...
Le "c'est à dire" n'a pas de raison d'être : on peut tirer aléatoirement des nombres dans un intervalle donné [0;2^32[ ou [0;1[ sans suivre la loi uniforme.Je parle naturellement de la fonction rand() sans précision supplémentaire. Donc, ma question est simple :
la fonction rand() telle qu'elle est utilisée dans les logiciels tels que C/C++, PHP, Delphi etc. renvoie une nombre aléatoire dans un intervalle donné [0;2^32[ ou [0;1[, c'est à dire que la loi est uniforme.
C'est l'absence de loi précisée qui fait que, par habitude, on sous-entend la loi uniforme (car c'est peut-être la loi la plus naturelle).
La documentation me semble très explicite à ce sujet ( http://help.scilab.org/docs/5.3.0/fr_FR/rand.html ) : par défaut, sans spécification particulière de "key", la loi suivie par les tirages rand() est la loi uniforme sur [0,1].
oui quand la "key" n'est pas préalablement modifiée bien sûr.
Je ne comprends rien à ce que tu écris. Ma phrase citée confirmait ce que tu disaisQuel est le lien entrema question "aléatoire" ET - OU "uniforme", c'est pareil ? c'est différents ? les résultats sont pareils ou différents ? quelle est leur répartition ?Certes la petite documentation n'est pas trop loquace << rand() retourne un nombre réel pris aléatoirement entre 0 et 1. >>.Ton document n'est pas vraiment explicite sur la définition de rand().
Arrête ton cinéma. Il me semble que je suis assez clair.
Et donc ?
Ce n'est pas moi qui clame depuis le depuis qu'il y a quelque de chose de surprenant dans les tirages aléatoires via le rand() de Scilab.
Grosmatou75001 t'a demandé quoi... Et tu ne le dis toujours pas. Pourquoi ?
Donc au lieu de poser 10 questions par message, dis clairement ce que tu as constaté de si surprenant.
Oui, je pose beaucoup de questions parce que j'ai observé que rand() et rand() ne donnent pas la même répartition, c'est à dire le même résultat suivant qu'on l'utilise avec avec des langages que j'appelle "de base" et Scilab (je n'ai pas essayé avec R et les autres).
Il me semble que d'abord il faut s'entendre sur les termes employés :
1- générateur de nombre aléatoire : un générateur de nombres tirés au hasard dans un intervalle donné
2- loi uniforme, là y'a un doute, soit les nombres servant aux tirages sont uniformément répartis, comme des nombres entiers dans une liste continue, soit les nombres résultant du tirage sont des nombres uniformément répartis. C'est l'un ou l'autre, mais pas les deux à la fois. Le seul moyen de s'en convaincre est de le tester (on est dans un forum informatique, donc l'essai est le seul vrai argument de discussion).
Dans le document d'aide de Scilab
Cela veut-il dire que les nombres servant au tirage sont uniformément répartis, comme dans rand() de base ? C'est la question que je pose. En d'autres termes rand() et rand() donnent-ils toujours la même répartition ou cela dépend du langage utilisé ?La loi par défaut est uniforme sur l'intervalle [0,1].
Il me parait indispensable de faire des essais comparatifs.
Pour ma part, dans les quelques langages que je connais, la fonction de tirage aléatoire par défaut renvoie toujours des nombres uniformément répartis entre deux bornes fixées.
Dernière modification par leon1789 ; 29/06/2013 à 14h17.
Bis repetita :
Ce n'est pas moi qui clame depuis le début qu'il y a quelque de chose de surprenant dans les tirages aléatoires via le rand() de Scilab.
Grosmatou75001 t'a demandé quoi... Les messages s'accumulent et tu ne le dis toujours pas...
Contrairement à ce qui est expliqué dans la doc, les tirages de Scilab avec le rand() par défaut ne suivent la loi uniforme, c'est ça ce que tu veux dire ??
Dernière modification par leon1789 ; 29/06/2013 à 14h57.
Je crois (et même je suis sûr) que tant que tu n'auras pas fait 2 simulations comparables avec rand() et que tu n'auras pas comparé les résultats tu ne pourras pas voir où est la différence.
Ca sert à rien de tourner autour du pot en discutant sur les termes, la question est simple : la même fonction a-t-elle toujours la même signification, c'est à dire la même répartition des résultats. Que l'on soit entre 0 et 1, entre 0 et 2^32 entre 1000 et 1000000 ne change rien, la question de concerne que la répartition.
Pourquoi tu ne réponds pas à cette question simple ?Tu dis ça parce que tu as essayé, testé, vérifié, constaté etc, ou parce que tu en es persuadé ?
Et dire que, toi, ô grand Dlzlogic, tu as fait toutes les simulations et que tu n'es pas capable de dire ce que tu constates de si surprenant avec le rand() de Scilab...
Lors de la dernière simulation sur la loi uniforme que tu évoquée, nous avons bien tous constaté que tu n'y connaissais rien : http://www.maths-forum.com/showthrea...892#post932892
Pour ma part, je ne connais pas tous les langages, les logiciels, les matériels de calculs, etc. Donc je ne peux pas certifier quoi que ce soit sur ce que je ne connais pas.
Bon, là je crois que tu t'es dévoilé.
En mathématique, on peut s'appuyer sur des théories, des formules, des "théorèmes" qu'on ne démontre pas, des affirmations à l'emporte-pièce avec en conclusion, "de toute façon t'y connais rien et tu comprends rien, d'ailleurs tout le monde sait que tu es de mauvaise foi" etc.
Ici on est dans un forum informatique. Là, il ne s'agit plus de lancer des vannes. On fait la simulation, et on en parle ou bien on s'abstient.
Il est dommage qu'aucun membre n'ait pris le temps de faire ces 2 petits comparatifs et/ou de raconter ses constatations.
Si quelqu'un se demande pourquoi ce sujet ma parait si important, on peut d'abord échanger en privé, mais je peux déjà dire qu'il s'agit d'une question précise posée par quelqu'un sur un forum et qu'il n'a pas eu de réponse satisfaisante à cause du "GRAND FLOU" sur ce problème.
Fichtre, je me suis dévoilé. MDR.
Aucun forumeur n'est ton esclave... Essaie donc de motiver un peu les lecteurs en racontant tes propres constatations. C'est la demande permanente depuis le message n°2 de Grosmatou75001... Ta réponse "simulez, cherchez et vous verrez" est un peu légère !
Si quelqu'un (comme moi) veut perdre du temps avec toi... et en MP, bien évidemment...
Je crois que j'ai surtout dévoilé ma naïveté à croire que tu avais quelque chose d'intéressant à montrer.
Peux-tu nous donner un lien sur ce forum et la discussion en question ? Merci d'avance...
Affligeant...En mathématique, on peut s'appuyer sur des théories, des formules, des "théorèmes" qu'on ne démontre pas, des affirmations à l'emporte-pièce avec en conclusion, "de toute façon t'y connais rien et tu comprends rien, d'ailleurs tout le monde sait que tu es de mauvaise foi" etc.
Ici on est dans un forum informatique. Là, il ne s'agit plus de lancer des vannes. On fait la simulation, et on en parle ou bien on s'abstient.
Pour toi qui parle si bien de simulation, voilà un fichier Excel avec la fameuse fonction ALEA (5800 appels, c'est suffisant ?) : dis nous si tu y vois une fonction plutôt gaussienne (loi normale... sur [0,1] ?? ) ou une fonction plutôt constante (loi uniforme) ? http://leon1789.perso.sfr.fr/tmp/Pour_Dlzlogic.xlsEnvoyé par DlzlogicLe fonction rand() bien connue, utilisée sous Excel sous le nom de ALEA, renvoie un nombre tiré aléatoirement dans l'intervalle précisé. Si l'opération est répétée plusieurs fois, la répartition des résultats est conforme à la loi normale. C'est facile à vérifier.
Tu sais très bien que je n'aime pas Excel.
5800 appels, c'est disproportionné, une centaine suffit largement.
La loi normale se caractérise pas le calcul du nombre d'écarts à la moyenne, je n'ai pas vu cela dans ton calcul, c'est exactement comme si tu avais fait un histogramme, un peu de patience. Mais naturellement avec ta bonne foi habituelle, tu va me répondre, c'est pas vrai.
Si tu insistes vraiment, je copierai de 5800 valeurs et je les traiterai avec mes outils. Mais on va probablement me répondre : c'est trop compliqué, tu manipules les chiffres, assorties de quelques insultes, comme d'habitude, bref les réactions habituelles contre les quelles je ne peux rien. Même les agrégés en physique "écrivent des choses adaptées à leur élève", c'est à dire qui n'a rien à voir avec la VERITE MATHEMATIQUE. Oui, c'est affligeant.
C'est marrant que tu demandes si 5800 appels c'est suffisant, parce que tu as constaté qu'au bout de 30 appels la moyenne était satisfaisante.
Mais en fait je perds mon temps.
Merci de garder ce genre de troll pour toi, je ne suis pas sur que les informaticiens adhèrent à ce genre de commentaires.Ici on est dans le forum informatique et pas dans le forum Math.
Pour ce qui est de rand, ca sert à rien si tu n'es pas capable de calculer la probabilité de sortie d'une face d'un dé équilibré. Je vois même pas comment tu pourrais comprendre la loi uniforme.
Se persuader ou faire un comparatif de courbes, c'est exactement pareil. Rien n'est prouvé.
Si un résultat te semble étrange,
1) commence par nous montrer les différentes courbes que tu as obtenues
2) en expliquant le protocole expérimental
3) en expliquant ce qu'il te semble étrange, les réflexions que tu as eues, et les résultats obtenus.
Ca n'a rien d'un truc de supériorité ou je sais quoi, mais tu ouvres une discussion, tu donnes les billes. Généralement ca marche ainsi.
Faire des stats sur 30 appels... on se demande pourquoi les instituts de sondage utilisent des échantillons de 1000 personnes.
Evidemment que 5800 appels c'est suffisant. Tu ne comprends même pas l'ironie.
tu n'as pas à copier les 5800 valeurs mais juste à télécharger le fichier et regarder !
Et tu peux même relancer les calculs autant de fois que tu veux... Bref, tu as tout sous les yeux et tu continues blablater des histoires à dormir debout.
je te fais perdre ton temps (je sais bien que tu ne comprendras jamais), mais tu fais perdre du temps à beaucoup de monde... depuis des années.
Dernière modification par leon1789 ; 30/06/2013 à 14h01.
@ Galerien69,
Tu ne m'as pas dit ce que tu connaissais de rand.
Pour Léon, voila une simulation.
C'est comme ça qu'il faut faire.
http://www.dlzlogic.com/Perso/Pour_Leon.xls
Aucune réponse n'est demandée.
je ne connais rien de rand , du moins pas plus que le lamba qui sait lire une api ou une spec.Tu ne m'as pas dit ce que tu connaissais de rand.
Cela dit, je ne vois toujours pas de courbes.
Je ne sais pas si tu as suivi des discussions précédentes sur ce sujet. Alors petit rappel, il semble que chaque fois on se ramène à un tirage de dés.
Le tirage de pile ou face est plus sophistiqué, puisque la probabilité d'avoir des suites 1, 2, 3 etc. est parfaitement connue, et on vérifie que les tirages aléatoires, avec rand, confirme cela.
Par ailleurs, ces notion ne m'intéressent pas dans le domaine des jeux ou de tout autre affirmation ou hypothèse à sensation, mais sont fondamentales au point de vue professionnel. C'est là qu'il y a un problème, lorsqu'on en parle, les réponses sont du genre, "c'est pas possible" ou "c'est pas vrai", et pourtant ça fait pas mal de temps qu'on résout des questions soit-disant impossibles.
Là ou ça devient très gènant, c'est quand un professionnel demande des détails, des explications, on lui répond (au mieux) "fais comme tu veux".
certes pourquoi pas.
Et ces courbes?
Je suppose qu'un expert en Excel n'aura aucun mal à dessiner une courbe avec les cellules F108 à P108, et de refaire la calcul autant de fois qu'il le souhaite. Moi, je préfère comparer des chiffres. Les administrations qui vérifient les résultats aussi. Les courbes c'est surtout pour le fun.
J'en conclus que tu n'as pas regardé mon fichier. Tu as encore raté l'occasion de comprendre quelque chose.Pour Léon, voila une simulation.
C'est comme ça qu'il faut faire.
http://www.dlzlogic.com/Perso/Pour_Leon.xls
Aucune réponse n'est demandée.
Tu as fais une simulation de quoi ? Tu calcules des moyennes, des produits, des racines carrées, ... C'est absolument sans lien avec l'étude de la répartition de la fonction rand() sur l'intervalle [0,1].
Bref, tes messages sont totalement décousus, tu n'arrives pas à dire ce que tu fais et faire ce que tu dis.
Dernière modification par leon1789 ; 30/06/2013 à 17h08.
Ce qui est très gênant, c'est quand tu contactes par MP des personnes à la recherche d'infos, pour essayer de les attirer dans tes histoires troubles (en diffament certains forumeurs au passage).
J'imagine que dans ta carrière tu n'as jamais fais un schéma. Parce que bon, visualiser, c'est pour le fun. Ca sert à rien pour comprendre.Moi, je préfère comparer des chiffres. Les administrations qui vérifient les résultats aussi. Les courbes c'est surtout pour le fun
Ce n'est pas à l'expert Excel ni à un autre intervenant de fournir les courbes. Encore une fois tu ouvres une discussion, tu fournis les billes. Tu es (évidemment) en droit de ne pas vouloir les fournir. Si tel est le cas, dis le ouvertement que tu n'en es pas capable ou que tu ne veux pas, mais évites de tourner ainsi autour du pot.Je suppose qu'un expert en Excel n'aura aucun mal à dessiner une courbe avec les cellules F108 à P108, et de refaire la calcul autant de fois qu'il le souhaite.
Pas de courbes, pas d'interprétations. Bonne continuation.
Bonjour,
Ne peut on pas premoderer certains membres, qui, en depit de leur meconnaissance et de leur inculture des mathématiques les plus elementaires, polluent incessament le forum avec leurs inepties? De l'exterieur ca ne donne pas une image tres positive du forum. Me semble que ca se fait deja pour les crackpots en physique.