@array[0 ..0] is one and not zero elements!
DB<103> @array=a..f
=> ("a", "b", "c", "d", "e", "f")
DB<104> @array[0..0]
=> "a"
UPDATE:
your statistical proof falls into the trap
scalar @array != scalar (LIST)
if your function() returns a one element list (0), then scalar function() will be 0, since 0 is the last element of the list.
(more detailed in Re^2: Idiom to return 0 or random number of array elements by eyepopslikeamosquito )
initializing @array = 1..10 makes it more obvious, b/c the last element of a sublist is now identical to the length!
DB<106> @array = 1 .. 10;
=> (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
DB<107> sub x{ return @array[ 0 .. int( rand @array ) ]; };
=> 0
DB<108> $stats{ scalar( x() ) }++ for 1 .. 1000;
=> ""
DB<109> \%stats;
=> { 1 => 100, 2 => 101, 3 => 108, 4 => 108, 5 => 101, 6 => 103, 7 =>
+ 79, 8 => 98, 9 => 100, 10 => 102 }
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.