Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/11/2011, 08h37   #1
Invité de passage
 
Homme Florian JOUVEL
Développeur informatique
Inscription : novembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme Florian JOUVEL
Âge : 23
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2011
Messages : 3
Points : 0
Points : 0
Par défaut tirage aléatoire en utilisant le temps

Bonjour,
J'ai besoin d'aide pour implémenter une fonction de tirage aléatoire qui utilise le temps en millisecondes et qui retournerait un nombre compris entre 1 et 78.
Pour finir, je récupère ce nombre pour ouvrir une certaine page (avec un nom du type maPage73.php si le tirage a retourné 73). Est-ce possible?

Il s'agit en fait d'un jeu de tarot qui ouvre une certaine page en fonction de l'instant ou l'on a cliqué.
florian9600 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 09h56   #2
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
Code :
1
2
3
var t=Math.Ceil(new Date().getMilliseconds()*77/1000)
 
alert(t)
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 10h13   #3
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 041
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 041
Points : 45 143
Points : 45 143
Code :
alert(new Date().getMilliseconds()%77 +1)
Un poil moins équitable au niveau de la distribution, le 78 ayant 7.69 % moins de chances de sortir que des chiffres de 1 à 76
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 10h20   #4
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
Citation:
Envoyé par SpaceFrog Voir le message
Code :
alert(new Date().getMilliseconds()%77 +1)
Un poil moins équitable au niveau de la distribution, le 78 ayant 7.69 % moins de chances de sortir que des chiffres de 1 à 76
j'ai rien compris

loin de moi l'idée de me mêler des questions mathématiques
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 11h14   #5
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 574
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 574
Points : 4 077
Points : 4 077
Citation:
Envoyé par florian9600 Voir le message
J'ai besoin d'aide pour implémenter une fonction de tirage aléatoire qui utilise le temps en millisecondes et qui retournerait un nombre compris entre 1 et 78.
Pourquoi ?

Quel problème poserait l'utilisation de Math.random() ?

Code :
1
2
3
4
5
6
function de(max) {
   if (max < 1) return 0;
   return Math.round((Math.random() * max) + .5);
}
 
var tonNombreEntre1Et78 = de(78);
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 11h22   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 041
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 041
Points : 45 143
Points : 45 143
C'était pourtant une perche qui t'étais destinée JT :mrgeein:

je suis parti sur le modulo de 77
qui varie donc de 0 à 77
auquel j'ajoute 1 pour avoir l'intervalle 1 à 78

Mais 1000 / 77 = 12,987012987012987012987012987013

12*77=924
donc tous les chiffres de 0 à 77 ont autant de chance de sortir de 0 à 924 millisecondes
reste 76
sur le modulo restant 77 ne sortira jamais
donc une fois sur 13 le 77 ne sort pas 1/13=0,076923076923076923076923076923077
soit 7.96 %

C'est un raisonnement tout personnel, et je compte sur toi pour le rectifier
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 11h30   #7
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
d'accord avec RomainVALERI, Math.random utilise l'horloge, par contre pour une meilleur probabilité de tirage il est conseillé de l'utiliser avec Math.floor
Code :
1
2
var numMax = 78;
var tirage = Math.floor( Math.random() * numMax) +1;
cas ou l'on démarre à 1, et pour un cas général
Code :
var tirage = Math.floor( Math.random() * (numMax - numMin + 1) + numMin);
PS: c'est garanti j'ai eu à traiter le cas.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 12h00   #8
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
Romain, c'est rigolo de pas utiliser Math.random() aussi

et en plus on maîtrise d'où vient le résultat!
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 12h04   #9
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
Citation:
Envoyé par SpaceFrog Voir le message
C'était pourtant une perche qui t'étais destinée JT :mrgeein:

je suis parti sur le modulo de 77
qui varie donc de 0 à 77
auquel j'ajoute 1 pour avoir l'intervalle 1 à 78

Mais 1000 / 77 = 12,987012987012987012987012987013

12*77=924
donc tous les chiffres de 0 à 77 ont autant de chance de sortir de 0 à 924 millisecondes
reste 76
sur le modulo restant 77 ne sortira jamais
donc une fois sur 13 le 77 ne sort pas 1/13=0,076923076923076923076923076923077
soit 7.96 %

C'est un raisonnement tout personnel, et je compte sur toi pour le rectifier
T'es cinglé, mec!
tu crois pas que je vais vérifier ni même essayer de comprendre ce chose truc einsteinien

sincèrement, je me contente de ma ptite règle de 3
(si toutefois, ça s'appelle comme ça)
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 12h57   #10
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 574
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 574
Points : 4 077
Points : 4 077
Citation:
Envoyé par NoSmoking Voir le message
d'accord avec RomainVALERI, Math.random utilise l'horloge, par contre pour une meilleur probabilité de tirage il est conseillé de l'utiliser avec Math.floor
...
PS: c'est garanti j'ai eu à traiter le cas.
Tu peux détailler ?
Les deux méthodes me semblaient équivalentes...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function de_NS(max) {
   if (max < 1) return 0;
   return Math.floor( Math.random() * max) +1;
}
function de_RV(max) {
   if (max < 1) return 0;
   return Math.round((Math.random() * max) + .5);
}
 
function statRandom() {
   var i = 0, FACES = 10, JETS = 10000;
   var resultats_RV = [], resultats_NS = [];
   while (i++ < FACES) {
      resultats_RV.push(0);
      resultats_NS.push(0);
   }
   var message_RV = "Résultats (RV) :\n\n";
   var message_NS = "Résultats (NS) :\n\n";
   for (i = 0; i < JETS; ++i) {
      ++resultats_RV[de_RV(FACES) - 1];
      ++resultats_NS[de_NS(FACES) - 1];
   }
   for (i = 0; i < FACES ; ++i) {
      message_RV += "Nombre de \"" + (i + 1) + "\" obtenus : " + resultats_RV[i] + "\n";
      message_NS += "Nombre de \"" + (i + 1) + "\" obtenus : " + resultats_NS[i] + "\n";
   }
   alert(message_RV);
   alert(message_NS);
}
statRandom();
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 22h24   #11
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
Citation:
Envoyé par RomainVALERI Voir le message
Tu peux détailler ?
Les deux méthodes me semblaient équivalentes...
1000 excuses je n'avais bien visualisé le + .5 et pris pour +1, les fréquences des sorties sont identiques.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2011, 00h33   #12
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 574
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 574
Points : 4 077
Points : 4 077
Citation:
Envoyé par NoSmoking Voir le message
1000 excuses je n'avais bien visualisé le + .5 et pris pour +1, les fréquences des sorties sont identiques.
Ah ben non aucun problème, je préfère ça, tu m'avais fait un peu peur faut avouer
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 18h15   #13
Invité de passage
 
Homme Florian JOUVEL
Développeur informatique
Inscription : novembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme Florian JOUVEL
Âge : 23
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2011
Messages : 3
Points : 0
Points : 0
Désolé de répondre si tard mais je pensais qu'on recevait un mail quand on avait une réponse, bref...

Merci à tout le monde pour vos réponses concernant le tirage aléatoire. Effectivement, je préfère faire ma fonction random, donc merci pour vos conseils.

Par contre je voulais aussi savoir comment je peux utiliser le résultat du tirage pour ouvrir une certaine photo, exemple: le tirage du numéro 37 me permettrait d'afficher l'image maPhoto_37.jpg .
florian9600 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 06h45   #14
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 132
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 132
Points : 7 262
Points : 7 262
Bonjour,

Pour que tu puisse recevoir un mail lors d'un nouveau message, active le dans ton tableau de bord.
Pour ton besoin, modifie seulement le src d'un image.
Code :
document.getElementById("idImage").src="maPhoto_"+nombre+".jpg";
Citation:
Envoyé par SpaceFrog
je suis parti sur le modulo de 77
qui varie donc de 0 à 77
c'est de 0 à 76 .
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 08h26   #15
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 041
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 041
Points : 45 143
Points : 45 143
oui mes mains ont gallopé sur le clavier numérique

je pensais bien à 0 - 76 d'ou le +1 qui décalle l'ointervalle de 1 a 77
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 15h21   #16
Invité de passage
 
Homme Florian JOUVEL
Développeur informatique
Inscription : novembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme Florian JOUVEL
Âge : 23
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2011
Messages : 3
Points : 0
Points : 0
Merci beaucoup, je vais essayer ça.
florian9600 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 19h08   #17
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 871
Points : 1 380
Points : 1 380
désolé, ça fait presque un mois que tu as ouvert ce sujet et ça fait presque un mois qu'une question me ronge de l'intérieur : POURQUOI ?

pourquoi ne pas utiliser la fonction "random" qui existe et vouloir utiliser le "time" qui n'a, à la base, pas ce rôle de fonction aléatoire ?
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h24.


 
 
 
 
Partenaires

Hébergement Web