Difference between revisions of "LlListStatistics"

From Second Life Wiki
Jump to navigation Jump to search
(llListStatistics returns float, not integer.)
(Add an example showing expected results for each statistical operation on a sample list)
 
(16 intermediate revisions by 6 users not shown)
Line 5: Line 5:
|func_footnote=If a list entry type is not a float or an integer it is silently ignored.  
|func_footnote=If a list entry type is not a float or an integer it is silently ignored.  
|func_desc
|func_desc
|return_text=that is the result of performing statistical aggregate function '''operation''' on '''srs'''.
|return_text=that is the result of performing statistical aggregate function {{LSLP|operation}} on {{LSLP|src}}.
|spec
|spec
|caveats
|caveats
|constants={{{!}}{{Prettytable}}
|constants={{{!}} class="sortable" {{Prettytable|style=margin-top:0;}}
{{!}}-{{Hl2}}
!Constant
!Constant
!Value
! title="Value" {{!}}
!Description
! class="unsortable" {{!}} Description
{{!}}-
{{!}}-
{{!}}{{LSLG|LIST_STAT_RANGE}}
{{!}} {{LSL Const|LIST_STAT_RANGE|integer|0|c=Calculates the range.}}
{{!}}0
{{!}} {{#var:value}}
{{!}}Returns the range.
{{!}} {{#var:comment}}
{{!}}-
{{!}}-
{{!}}{{LSLG|LIST_STAT_MIN}}
{{!}} {{LSL Const|LIST_STAT_MIN|integer|1|c=Calculates the smallest number.}}
{{!}}1
{{!}} {{#var:value}}
{{!}}Retrieves the smallest number.
{{!}} {{#var:comment}}
{{!}}-
{{!}}-
{{!}}{{LSLG|LIST_STAT_MAX}}
{{!}} {{LSL Const|LIST_STAT_MAX|integer|2|c=Calculates the largest number.}}
{{!}}2
{{!}} {{#var:value}}
{{!}}Retrieves the largest number.
{{!}} {{#var:comment}}
{{!}}-
{{!}}-
{{!}}{{LSLG|LIST_STAT_MEAN}}
{{!}} {{LSL Const|LIST_STAT_MEAN|integer|3|c=Calculates the mean (average).}}
{{!}}3
{{!}} {{#var:value}}
{{!}}Retrieves the mean (average).
{{!}} {{#var:comment}}
{{!}}-
{{!}}-
{{!}}{{LSLG|LIST_STAT_MEDIAN}}
{{!}} {{LSL Const|LIST_STAT_MEDIAN|integer|4|c=Calculates the median number.}}
{{!}}4
{{!}} {{#var:value}}
{{!}}Retrieves the median number.
{{!}} {{#var:comment}}
{{!}}-
{{!}}-
{{!}}{{LSLG|LIST_STAT_STD_DEV}}
{{!}} {{LSL Const|LIST_STAT_STD_DEV|integer|5|c=Calculates the standard deviation.}}
{{!}}5
{{!}} {{#var:value}}
{{!}}Calculates the standard deviation.
{{!}} {{#var:comment}}
{{!}}-
{{!}}-
{{!}}{{LSLG|LIST_STAT_SUM}}
{{!}} {{LSL Const|LIST_STAT_SUM|integer|6|c=Calculates the sum.}}
{{!}}6
{{!}} {{#var:value}}
{{!}}Calculates the sum.
{{!}} {{#var:comment}}
{{!}}-
{{!}}-
{{!}}{{LSLG|LIST_STAT_SUM_SQUARES}}
{{!}} {{LSL Const|LIST_STAT_SUM_SQUARES|integer|7|c=Calculates the sum of the squares.}}
{{!}}7
{{!}} {{#var:value}}
{{!}}Calculates the sum of the squares.
{{!}} {{#var:comment}}
{{!}}-
{{!}}-
{{!}}{{LSLG|LIST_STAT_NUM_COUNT}}
{{!}} {{LSL Const|LIST_STAT_NUM_COUNT|integer|8|c=Determines the number of float and integer elements.}}
{{!}}8
{{!}} {{#var:value}}
{{!}}Retrieves the number of float and integer elements.
{{!}} Determines the number of [[float]] and [[integer]] elements.
{{!}}-
{{!}}-
{{!}}{{LSLG|LIST_STAT_GEOMETRIC_MEAN}}
{{!}} {{LSL Const|LIST_STAT_GEOMETRIC_MEAN|integer|9|c=Calculates the geometric mean.}}
{{!}}9
{{!}} {{#var:value}}
{{!}}Calculates the geometric mean.
{{!}} {{#var:comment}}
{{!}}}
{{!}}}
|examples
|examples=
<source lang="lsl2">// Show results for each operation for a sample list
default
{
    state_entry()
    {
        list LX = [-1, 3.33, 17, "object", -4.5, 0.8675 ];
 
        llSay(0, "G.Mean= " + (string) llListStatistics(LIST_STAT_GEOMETRIC_MEAN, LX) );          // 0. 000000
        llSay(0, "Max= " + (string) llListStatistics(LIST_STAT_MAX, LX) );                        // 17.000000
        llSay(0, "Min= " + (string) llListStatistics(LIST_STAT_MIN, LX) );                        // -4.500000
        llSay(0, "Mean= " + (string) llListStatistics(LIST_STAT_MEAN, LX) );                      // 3.139500
        llSay(0, "Median= " + (string) llListStatistics(LIST_STAT_MEDIAN, LX) );                  // 0.867500
        llSay(0, "Count= " + (string) llListStatistics(LIST_STAT_NUM_COUNT, LX) );                // 5.000000
        llSay(0, "Range= " + (string) llListStatistics(LIST_STAT_RANGE, LX) );                    // 21.500000
        llSay(0, "Std.Dev= " + (string) llListStatistics(LIST_STAT_STD_DEV, LX) );                // 8.258468
        llSay(0, "Sum= " + (string) llListStatistics(LIST_STAT_SUM, LX) );                        // 15.697500
        llSay(0, "Sum of squares= " + (string) llListStatistics(LIST_STAT_SUM_SQUARES, LX) );      // 322.091500
 
    }
}
// Note that LSLEditor produces "NaN" (Not A Number) for the geometric mean above. Geometric mean applies only to numbers of the same sign.
</source>
 
<source lang="lsl2">// shows just how bad SL is behaving and demonstrates the use of llListStatistics()
list dil_s;
list fps_s;
integer ticks = 0;
 
default
{
    state_entry()
    {
        llSetTimerEvent(1.0);
    }
   
    on_rez (integer parm)
    {
        llResetScript();
    }
   
    timer()
    {
        dil_s = llList2List(dil_s + llGetRegionTimeDilation(), -60, -1);
        fps_s = llList2List(fps_s + llGetRegionFPS(), -60, -1);
        if(3 <= ++ticks)
        {
            llSetText(
                "Dilation: min="+(string) llListStatistics(LIST_STAT_MIN, dil_s) + ", mean=" +
                    (string) llListStatistics(LIST_STAT_MEAN, dil_s) + ", max=" +
                    (string) llListStatistics(LIST_STAT_MAX, dil_s) + ", std.dev=" +
                    (string) llListStatistics(LIST_STAT_STD_DEV, dil_s) + "\n" +
                    "FPS: min="+(string) llListStatistics(LIST_STAT_MIN, fps_s) + ", mean=" +
                    (string) llListStatistics(LIST_STAT_MEAN, fps_s) + ", max=" +
                    (string) llListStatistics(LIST_STAT_MAX, fps_s) + ", std.dev=" +
                    (string) llListStatistics(LIST_STAT_STD_DEV, fps_s),
                <1.0, 1.0, 0.0>, //yellow
                1.0);
        }
    }
   
    changed(integer change)
    {
        if(change & CHANGED_REGION)
        {
            llResetScript();
        }
    }
}</source>
|helpers
|helpers
|also_functions
|also_functions=
{{LSL DefineRow||[[llGetListEntryType]]|}}
|also_events
|also_events
|also_tests
|also_tests=
{{LSL DefineRow||[[llListStatistics Test]]|}}
|also_articles
|also_articles
|notes
|notes=Given that this operation ignores any non-numbers in a list, it can be used to tell you, in a mixed list, how many of the elements in a list are numbers (when used with the [[LIST_STAT_NUM_COUNT]] parameter.)
|permission
|permission
|negative_index
|negative_index

Latest revision as of 07:41, 13 January 2016

Summary

Function: float llListStatistics( integer operation, list src );

Returns a float that is the result of performing statistical aggregate function operation on src.

• integer operation a LIST_STAT_* flag
• list src

If a list entry type is not a float or an integer it is silently ignored.

Constant Description
LIST_STAT_RANGE 0 Calculates the range.
LIST_STAT_MIN 1 Calculates the smallest number.
LIST_STAT_MAX 2 Calculates the largest number.
LIST_STAT_MEAN 3 Calculates the mean (average).
LIST_STAT_MEDIAN 4 Calculates the median number.
LIST_STAT_STD_DEV 5 Calculates the standard deviation.
LIST_STAT_SUM 6 Calculates the sum.
LIST_STAT_SUM_SQUARES 7 Calculates the sum of the squares.
LIST_STAT_NUM_COUNT 8 Determines the number of float and integer elements.
LIST_STAT_GEOMETRIC_MEAN 9 Calculates the geometric mean.

Examples

// Show results for each operation for a sample list
default
{
    state_entry()
    {
        list LX = [-1, 3.33, 17, "object", -4.5, 0.8675 ];

        llSay(0, "G.Mean= " + (string) llListStatistics(LIST_STAT_GEOMETRIC_MEAN, LX) );           // 0. 000000
        llSay(0, "Max= " + (string) llListStatistics(LIST_STAT_MAX, LX) );                         // 17.000000
        llSay(0, "Min= " + (string) llListStatistics(LIST_STAT_MIN, LX) );                         // -4.500000
        llSay(0, "Mean= " + (string) llListStatistics(LIST_STAT_MEAN, LX) );                       // 3.139500
        llSay(0, "Median= " + (string) llListStatistics(LIST_STAT_MEDIAN, LX) );                   // 0.867500
        llSay(0, "Count= " + (string) llListStatistics(LIST_STAT_NUM_COUNT, LX) );                 // 5.000000
        llSay(0, "Range= " + (string) llListStatistics(LIST_STAT_RANGE, LX) );                     // 21.500000
        llSay(0, "Std.Dev= " + (string) llListStatistics(LIST_STAT_STD_DEV, LX) );                 // 8.258468
        llSay(0, "Sum= " + (string) llListStatistics(LIST_STAT_SUM, LX) );                         // 15.697500
        llSay(0, "Sum of squares= " + (string) llListStatistics(LIST_STAT_SUM_SQUARES, LX) );      // 322.091500

    }
}
// Note that LSLEditor produces "NaN" (Not A Number) for the geometric mean above. Geometric mean applies only to numbers of the same sign.
// shows just how bad SL is behaving and demonstrates the use of llListStatistics()
list dil_s;
list fps_s;
integer ticks = 0;

default
{
    state_entry()
    {
        llSetTimerEvent(1.0);
    }
    
    on_rez (integer parm)
    {
        llResetScript();
    }
    
    timer()
    {
        dil_s = llList2List(dil_s + llGetRegionTimeDilation(), -60, -1);
        fps_s = llList2List(fps_s + llGetRegionFPS(), -60, -1);
        if(3 <= ++ticks)
        {
            llSetText(
                "Dilation: min="+(string) llListStatistics(LIST_STAT_MIN, dil_s) + ", mean=" +
                    (string) llListStatistics(LIST_STAT_MEAN, dil_s) + ", max=" +
                    (string) llListStatistics(LIST_STAT_MAX, dil_s) + ", std.dev=" +
                    (string) llListStatistics(LIST_STAT_STD_DEV, dil_s) + "\n" + 
                    "FPS: min="+(string) llListStatistics(LIST_STAT_MIN, fps_s) + ", mean=" +
                    (string) llListStatistics(LIST_STAT_MEAN, fps_s) + ", max=" +
                    (string) llListStatistics(LIST_STAT_MAX, fps_s) + ", std.dev=" +
                    (string) llListStatistics(LIST_STAT_STD_DEV, fps_s),
                <1.0, 1.0, 0.0>, //yellow
                1.0);
        }
    }
    
    changed(integer change)
    {
        if(change & CHANGED_REGION)
        {
            llResetScript();
        }
    }
}

Notes

Given that this operation ignores any non-numbers in a list, it can be used to tell you, in a mixed list, how many of the elements in a list are numbers (when used with the LIST_STAT_NUM_COUNT parameter.)

See Also

Functions

•  llGetListEntryType

Deep Notes

Search JIRA for related Issues

Tests

•  llListStatistics Test

Signature

function float llListStatistics( integer operation, list src );