good chemistry is complicated,and a little bit messy -LW PerlMonks

### Re^2: Idiom to return 0 or random number of array elements

by LanX (Sage)
 on Dec 07, 2012 at 05:46 UTC ( #1007688=note: print w/replies, xml ) Need Help??

@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 }

Cheers Rolf

Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1007688]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (2)
As of 2022-08-13 13:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?

No recent polls found

Notices?