IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Quel pourcentage de retomber sur le même nombre avec mt_rand() [SQL-Server]


Sujet :

PHP & Base de données

  1. #1
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut Quel pourcentage de retomber sur le même nombre avec mt_rand()
    Bonjour,

    D'après vous, combien de "chances" a-t-on de tomber sur le même nombre avec la fonction mt_rand() ?

  2. #2
    Membre régulier Avatar de coach759
    Profil pro
    Webmaster
    Inscrit en
    Août 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2009
    Messages : 79
    Points : 92
    Points
    92
    Par défaut
    Bonjour,

    Difficile de répondre à cette question, mais tu pourrais imaginé un script qui fait un grand nombre de fois mt_rand() et qui compte combien de fois chaque nombre est tombé.

    N'hésite pas si tu rencontre des soucis
    Si à la Saint Valentin elle te caresse la main, vivement la Sainte Marguerite

  3. #3
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    A mon grand étonnement j'ai généré un million d'enregistrements et j'ai compté 1828 doublons relatifs en table. Ca reste tout de même raisonnable, 0,18%.

    Le code de génération et comptage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
    $server1 = 'MONSERVEUR';
    $base1 = 'TEST';
    $link = mssql_connect($server1, 'sa', 'mdp');
    $db = mssql_select_db($base1);
    if((!$link) || (!$db)) {
        die('Erreur de connexion à MSSQL');
    }
     
    $nb=1000000;
     
     for ($i=0; $i<$nb; $i++)
    {
    $numero = mt_rand();
    $r = "insert into test_rand (numero) values ('".$numero."')";
    $lancer = mssql_query($r);
    } 
    $r1 = mssql_query("select numero from test_rand");
    $compter_generer = mssql_num_rows($r1);
     
     if($lancer)
    	{
    		echo 'Ok';
    		echo $count;
    	}
    	else
    	{
    		echo 'ko';
    	}
     
    $r2 = mssql_query("SELECT DISTINCT *
    FROM   test_rand T1
    WHERE  EXISTS (SELECT *
                   FROM   test_rand T2
                   WHERE  T1.id <> T2.id
                     AND  T1.numero    = T2.numero)");
    $compter_doublon = mssql_num_rows($r2);
     
     echo $compter_generer; ?>
     <br>
     <?php echo $compter_doublon; ?>
    La table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    USE [TEST]
    GO
     
    /****** Object:  Table [dbo].[test_rand]    Script Date: 04/05/2010 14:05:22 ******/
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[test_rand]') AND type in (N'U'))
    DROP TABLE [dbo].[test_rand]
    GO
     
    USE [TEST]
    GO
     
    /****** Object:  Table [dbo].[test_rand]    Script Date: 04/05/2010 14:05:23 ******/
    SET ANSI_NULLS ON
    GO
     
    SET QUOTED_IDENTIFIER ON
    GO
     
    CREATE TABLE [dbo].[test_rand](
    	[id] [int] IDENTITY(1,1) NOT NULL,
    	[numero] [int] NULL,
     CONSTRAINT [PK_rand] PRIMARY KEY CLUSTERED 
    (
    	[id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
     
    GO

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment afficher une liste sur la même ligne avec tous les navigateurs
    Par Alexandrebox dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 25/07/2010, 03h05
  2. Comment rester sur la même page avec actualiser ?
    Par schnuky dans le forum Débuter
    Réponses: 5
    Dernier message: 30/07/2009, 18h55
  3. 2 Liens sur la même ligne avec Float Right
    Par Handy dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 04/11/2008, 16h13
  4. [Débutant] Mettre deux ellipses sur la même figure avec ezplot
    Par nini94 dans le forum MATLAB
    Réponses: 2
    Dernier message: 11/06/2008, 09h32
  5. Avoir 3 blocs aligné sur la même ligne avec hauteur automatique
    Par arnaudperfect dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 30/01/2008, 02h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo