czwartek, 27 lutego 2014

Wartość oczekiwana w PS

Ostatnio bawiłem się statystyką i postanowiłem napisać super prostą funkcję do zliczania wartości oczekiwanej w PowerShell.


function Get-ExpectedValue
{
    param(
        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [array]$values=@(),
        
        [Parameter(Mandatory=$false)]
        [ValidateNotNullOrEmpty()]
        [array]$probability=$( @(1/$values.Length) * $values.Length)
    )
        [int]$min =[math]::Min($values.Length, $probability.Length)
        $sum=0
        $probabilitySum=0
        for($i=0; $i -lt $min; $i++)
        {
            $product = [double]$values[$i] * $probability[$i]
            $sum+=  $product
            $probabilitySum+=$probability[$i]
        }

        return ($sum / $probabilitySum)
}
Wprowadźmy wartość oczekiwaną w praktykę. Wartość oczekiwana sprawdza się w grach.

Kostka sześcienna ma wartość oczekiwaną 3.5
Get-ExpectedValue  -values 1,2,3,4,5,6  #3,5

Gdyby prawdopodobieństwo wystąpienia ilości oczek nie było takie same to wartość oczekiwana była by inna:
Get-ExpectedValue  -values 1,2,3,4,5,6 -probability ((1/6), (1/5),(1/3),(1/3))  #2,80645161290323


Dajmy na to, że gramy w kości. Jeżeli uzyskasz liczbę oczek mniejszą lub równą 2 to dasz mi kwadrat różnicy 6 i ilości oczek. Natomiast jak uzyskasz liczbę oczek 3,4,5,6 to ja tobie daję dwu-krotność liczby oczek.
Get-ExpectedValue  -values ( (-1* (6-1) *(6-1) ), (-1*(6-2)*(6-2)),  6,8,10,12 ) #-0,833333333333333



Bardzo lubię grać w Osadników z catanu i w grze występują dwie kostki. Wiesz może dlaczego złodziejem ruszasz się, gdy masz sumę równa 7?? Rozwiązanie jest przedstawione poniżej:
$dice  = 1,2,3,4,5,6
$dice2=  $arr | %{ 
    $outter = $_
    $arr | %{
        $inner = $_
        return $outter + $inner
    }
} | sort
Get-ExpectedValue $dice2 #7

$dice2 | group 
Count Name                      Group                                                                                                                                    
----- ----                      -----                                                                                                                                    
    1 2                         {2}                                                                                                                                      
    2 3                         {3, 3}                                                                                                                                   
    3 4                         {4, 4, 4}                                                                                                                                
    4 5                         {5, 5, 5, 5}                                                                                                                             
    5 6                         {6, 6, 6, 6...}                                                                                                                          
    6 7                         {7, 7, 7, 7...}                                                                                                                          
    5 8                         {8, 8, 8, 8...}                                                                                                                          
    4 9                         {9, 9, 9, 9}                                                                                                                             
    3 10                        {10, 10, 10}                                                                                                                             
    2 11                        {11, 11}                                                                                                                                 
    1 12                        {12}  


Jest to wartość oczekiwana, a jednocześnie najczęściej spotykana suma.

Brak komentarzy:

Prześlij komentarz