Hi Daniel
As a Pascal/C/Modula-2 compiled languages rule OK programmer, my gut
reaction is integer overflow. Perl performs all of its numerical
calculations using floating point math in a manner that is determined by the
CPU and the operating system on which it is running. This will obviously
vary from platform to platform. To be honest I doubt that this is in fact
the explanation and someone more knowledgeable than I will set you straight.
But there are two things that might help you home in on the problem.
First off, try the same routine, but with numbers in a range less than
32,000.
Second, have you tried using the integer pragma?
use integer;
#your integer arithmetic code goes here
no integer;
#back to using floating point
On a different note, if you want your numbers to be as close to random as
possible, you should set a random seed first. If you don't Perl is quite
likely to produce the same 'random' series each time you run it. So you
should certainly mod your code to be something like:
srand();
$randomNumber = int(rand(999));
You can provide a seed parameter to srand, but if you don't it will use the
current time.
Happy problem solving
Ian
On 2004/09/15 01:58, in article
10***************@nntp.acecape.com, "daniel
kaplan" <no****@nospam.com> wrote:
so i generate a serial number with the exact code below (three lines):
$number1 = 10000 + int(rand(99999));
$number2 = 10000 + int(rand(99999));
$shrwsn = "$number1-$number2";
the point is i want TWO five digit numbers separated by a dash "-"
and all is cool, but i just noticed, that for the three entries i have made
test wise:
79109-72626
106421-1023 these last two are six and four digits.....
108629-3542
WHY? these were all made with the SAME script...............