Bug #12455 Updated: Srand and shuffle give odd results

From: Date: Mon, 30 Jul 2001 10:25:29 +0000
Subject: Bug #12455 Updated: Srand and shuffle give odd results
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-61528@lists.php.net to get a copy of this message
ID: 12455 User updated by: sulka@sulake.com Reported By: sulka@sulake.com Status: Open Bug Type: *Math Functions Old Operating System: SunOS 5.8 (Solaris) Operating System: All Old PHP Version: 4.0.4pl1 PHP Version: 4.0.4pl1, 4.0.6 New Comment: The same problem also occurs on PHP 4.0.6 on Darwin/PPC. System info: PHP Version 4.0.6 System: Darwin localhost 1.3.7 Darwin Kernel Version 1.3.7: Sat Jun  9 11:12:48 PDT 2001; root:xnu/xnu-124.13.obj~1/RELEASE_PPC  Power Macintosh powerpc Configure Command './configure' '--with-mysql=/usr/local' '--with-apxs=/usr/sbin/apxs' '--with-zlib=/usr' Server API: Apache Apache Version: Apache/1.3.20 Previous Comments: ------------------------------------------------------------------------ [2001-07-30 05:17:09] sulka@sulake.com A friend tried to run the test code on his machine and also got 4 as a result. This is a Linux machine so my original guess of this being Solaris specific isn't true. The only real common denominator seems to be the PHP version? I'm trying to get an upgrade to see if this is happening under 4.0.6. Here's more info on the two servers this is occuring on: PHP Version: 4.0.4pl1 System: Linux xxx.com 2.2.14 #2 SMP Tue Mar 14 14:42:34 PST 2000 i686 unknown Configure Command: './configure' '--with-apxs=/usr/local/apache/bin/apxs' '--with-xml' '--with-mcrypt' '--with-mysql' '--enable-track-vars' Server API: Apache System: SunOS yyy.com 5.8 Generic_108528-02 sun4u sparc SUNW,UltraSPARC-IIi-cEngine Configure Command: './configure' '--with-apache=../apache_1.3.14' '--with-mysql=/usr/local/mysql' '--with-ldap=/usr/local' '--with-db3=/usr/local/BerkeleyDB.3.2' '--with-gd=../gd1.5' '--with-ttf=/usr/local' '--enable-wddx' ------------------------------------------------------------------------ [2001-07-29 16:41:51] sulka@sulake.com Well, when I run that code I get 4, not 500. Upping the number of iterations doesn't help. I think the problem is with the particular build (extension/OS combination). Any way to debug this? ------------------------------------------------------------------------ [2001-07-29 14:26:39] rasmus@php.net I don't think I understand what the problem is here. I tested your code with the following: <? function pwd() { $password = ""; $array = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',0,1,2,4,5,6,7,8,9); srand ((double)microtime()*1000000); shuffle(&$array); for ($i=0; $i<6; $i++) { $password .= $array[$i]; } return $password; } $i=0; while($i<500) { $password = pwd(); $a[$password] = $password; $i++; } echo count($a); ?> This always returns 500 which means that 500 unique passwords were always created. ------------------------------------------------------------------------ [2001-07-29 05:51:30] sulka@sulake.com I'm using the following code to create random strings (passwords): $password = ""; $array = array('a','b','c','d','e','f','g','h','i','j','k','l','m',' n','o','p','q','r','s','t','u','v','w','x','y','z',0,1,2,4, 5,6,7,8,9); srand ((double)microtime()*1000000); shuffle(&$array); for ($i=0; $i<6; $i++) { $password .= $array[$i]; } Now, for some reason this seems to return only five different values ever on the Solaris machine I'm running the code on. And I'm not checking on the same run of the script, this is based on accessing page with the script through http and looking at the results for about 150 reloads on two different days. This is the first time I'm sending a PHP report so I don't know exactly what information to provide. Please ask for more if as you see fit. ------------------------------------------------------------------------ Edit this bug report at http://bugs.php.net/?id=12455&edit=1

« previous php.dev (#61528) next »