Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 28/06/2011, 23h32   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2009
Messages : 129
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 129
Points : 14
Points : 14
Par défaut Generation nombre aleatoire

Bonjour, je voudrais savoir comment faire pour generer un nombre aleatoire entre 1 et 3

et entre 10 et 25
domino313131 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 07h58   #2
Membre éprouvé
 
Homme romain escudier
Développeur informatique
Inscription : juin 2011
Messages : 300
Détails du profil
Informations personnelles :
Nom : Homme romain escudier
Âge : 22
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2011
Messages : 300
Points : 471
Points : 471
T'as pas du chercher beaucoup.......
rand
__________________
Pas de solution, pas de probleme

Une réponse utile (ou +1) le pouce vert
Une réponse à votre question

skeud est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 29/06/2011, 16h47   #3
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Bonjour,

Tu peux faire comme ça :

Code :
1
2
3
4
5
6
7
8
9
10
$choix = mt_rand(0,2);
 
if($choix < 1)
{
 $nombre = mt_rand(1, 3);
}
else
{
 $nombre = mt_rand(10, 25);
}
mt_rand() est plus rapide et renvoi un résultat plus aléatoire que rand().
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 17h02   #4
Membre actif
 
Avatar de elcoyotos
 
Inscription : octobre 2006
Messages : 297
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : octobre 2006
Messages : 297
Points : 175
Points : 175
Encore plus simple :
Code :
1
2
3
4
5
6
7
 
<?php
$nombre_aleatoire_1_3 = rand(1, 3);
$nombre_aleatoire_10_25 = rand(10, 25);
echo "Nombre aléatoire entre 1 et 3 : ".$nombre_aleatoire_1_3."<br />";
echo "Nombre aléatoire entre 10 et 25 : ".$nombre_aleatoire_10_25;
?>
__________________
Ecoute, sinon ta langue te perdra
L'ouest Américain
elcoyotos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 17h14   #5
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Citation:
Envoyé par elcoyotos Voir le message
Encore plus simple :
Code :
1
2
3
4
5
6
7
 
<?php
$nombre_aleatoire_1_3 = rand(1, 3);
$nombre_aleatoire_10_25 = rand(10, 25);
echo "Nombre aléatoire entre 1 et 3 : ".$nombre_aleatoire_1_3."<br />";
echo "Nombre aléatoire entre 10 et 25 : ".$nombre_aleatoire_10_25;
?>
Non, car il cherche à obtenir un nombre entre 1 et 3 et entre 10 et 25.
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 17h22   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
En générant une table et en utilisant array_rand tout simplement:
Code :
1
2
3
4
5
6
7
8
9
10
11
$bornes = array(array(1,3), array(10,25));
 
$table = array();
foreach ($bornes as $borne) {
  $table = array_merge($table, array_keys($a = array_fill($borne[0], $borne[1] - $borne[0] +1, 0)));
}
 
var_dump(array_rand($table));
var_dump(array_rand($table));
var_dump(array_rand($table));
var_dump(array_rand($table));
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 18h20   #7
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Encore plus simple :

Code :
$nombre = (mt_rand(0,2)<1)?mt_rand(1, 3):mt_rand(10, 25);
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 18h29   #8
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Citation:
Envoyé par philodido Voir le message
Encore plus simple :

Code :
$nombre = (mt_rand(0,2)<1)?mt_rand(1, 3):mt_rand(10, 25);
Je ne crois pas non car dans ton cas, la pondération sur les deux bornes est identique alors que la seconde à clairement plus d'éléments que la première.
Les nombres 1 2 et 3 sortiront donc beaucoup plus souvent ce qui n'est pas vraiment aléatoire...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 19h04   #9
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Citation:
Envoyé par Benjamin Delespierre Voir le message
Je ne crois pas non car dans ton cas, la pondération sur les deux bornes est identique alors que la seconde à clairement plus d'éléments que la première.
Les nombres 1 2 et 3 sortiront donc beaucoup plus souvent ce qui n'est pas vraiment aléatoire...
Il suffit de moduler la pondération afin d'établir un équilibre de probabilités :

Code :
$nombre = (mt_rand(1,18)<3)?mt_rand(1, 3):mt_rand(10, 25);
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 17h40   #10
Membre régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 55
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 55
Points : 77
Points : 77
Sinon : (un peu lourd mais bon)

Code :
1
2
3
do  {
  $nombre = mt_rand(1,25);
} while ($nombre < 10 and $nombre > 3);
Avalion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 17h54   #11
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Citation:
Envoyé par philodido Voir le message
Il suffit de moduler la pondération afin d'établir un équilibre de probabilités :

Code :
$nombre = (mt_rand(1,18)<3)?mt_rand(1, 3):mt_rand(10, 25);
C'est juste tant que l'on ne doit trouver qu'un nombre dans deux ranges.

@Avalion
Non c'est pas top... et comme je l'ai fait remarque plus haut c'est pas vraiment aléatoire.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 18h07   #12
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
comme ça aussi :

Code :
1
2
$range = array_merge(range(1, 3), range(10, 25));
$nb = $range[array_rand($range)];
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 18/07/2011, 19h35   #13
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
et comme je l'ai fait remarque plus haut c'est pas vraiment aléatoire
Je ne suis pas d'accord : le 1 a autant de chance de sortir que le 25 avec la dernière proposition de Avalion...

Edit : Sorry, j'avais pas vu que ta remarque concerne le post de Philodido...
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 19h55   #14
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Citation:
Envoyé par Benjamin Delespierre Voir le message
C'est juste tant que l'on ne doit trouver qu'un nombre dans deux ranges.
Ça tombe bien puisque c'est exactement ce que voulait faire l'utilisateur :

Citation:
Envoyé par domino313131 Voir le message
...je voudrais savoir comment faire pour generer un nombre aleatoire entre 1 et 3 et entre 10 et 25
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 20h02   #15
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Citation:
Envoyé par laurentSc Voir le message
...Edit : Sorry, j'avais pas vu que ta remarque concerne le post de Philodido...
Ça ne concernait pas mon post. Regarde le "@Avalion" juste avant :

Citation:
Envoyé par Benjamin Delespierre Voir le message
@Avalion
Non c'est pas top... et comme je l'ai fait remarque plus haut c'est pas vraiment aléatoire.
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 21h15   #16
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
Ça ne concernait pas mon post. Regarde le "@Avalion" juste avant
Oui, tu as raison ; d'ailleurs autant ma remarque est vraie pour ta proposition, autant elle est fausse pour celle de Avalion.
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 10h19   #17
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Ne vous cassez plus la tête, je pense que Stealth à trouvé l'algo master (sur le même principe que le mien mais sans boucle).
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 11h32   #18
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
non ya mieux.
Code :
1
2
3
4
5
6
 
$alea = rand(1,19);//19 = 25 - 6 
if ( $alea > 3 )
{
$area += 6; // 6 = 10-4
}
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 12h09   #19
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Ca a l'air en effet pas mal (et simple) sauf qu'à mon avis, il vaut mieux remplacer 6 par 7 :
Code :
1
2
3
4
5
$alea = rand(1,18);//19 = 25 - 7
if ( $alea > 3 )
{
$area += 7; // 7 = 10-3
}
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 13h47   #20
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
c'est ce que je me suis dit au début puis apres j'ai testé avec des cas limites, ça dépent comment on interprete les intervalles (ouvert ou fermés)

si aléa vaut 3 alors il reste à 3.
si aléa vaut 4 alors il faut qu'il se décale à 10 d'ou le +6...
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 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 02h27.


 
 
 
 
Partenaires

Hébergement Web