Bonjour,
D'après vous, combien de "chances" a-t-on de tomber sur le même nombre avec la fonction 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() ?
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
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 :
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
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; ?>
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager