47 lines
1.3 KiB
Plaintext
47 lines
1.3 KiB
Plaintext
$character = [PSCustomObject]@{
|
||
aleph = [PSCustomObject]@{Expected=1/5 ; Alpha="א"}
|
||
beth = [PSCustomObject]@{Expected=1/6 ; Alpha="ב"}
|
||
gimel = [PSCustomObject]@{Expected=1/7 ; Alpha="ג"}
|
||
daleth = [PSCustomObject]@{Expected=1/8 ; Alpha="ד"}
|
||
he = [PSCustomObject]@{Expected=1/9 ; Alpha="ה"}
|
||
waw = [PSCustomObject]@{Expected=1/10 ; Alpha="ו"}
|
||
zayin = [PSCustomObject]@{Expected=1/11 ; Alpha="ז"}
|
||
heth = [PSCustomObject]@{Expected=1759/27720; Alpha="ח"}
|
||
}
|
||
|
||
$sum = 0
|
||
$iterations = 1000000
|
||
$cumulative = [ordered]@{}
|
||
$randomly = [ordered]@{}
|
||
|
||
foreach ($name in $character.PSObject.Properties.Name)
|
||
{
|
||
$sum += $character.$name.Expected
|
||
$cumulative.$name = $sum
|
||
$randomly.$name = 0
|
||
}
|
||
|
||
for ($i = 0; $i -lt $iterations; $i++)
|
||
{
|
||
$random = Get-Random -Minimum 0.0 -Maximum 1.0
|
||
|
||
foreach ($name in $cumulative.Keys)
|
||
{
|
||
if ($random -le $cumulative.$name)
|
||
{
|
||
$randomly.$name++
|
||
break
|
||
}
|
||
}
|
||
}
|
||
|
||
foreach ($name in $character.PSObject.Properties.Name)
|
||
{
|
||
[PSCustomObject]@{
|
||
Name = $name
|
||
Expected = $character.$name.Expected
|
||
Actual = $randomly.$name / $iterations
|
||
Character = $character.$name.Alpha
|
||
}
|
||
}
|