40 lines
1.0 KiB
AutoHotkey
40 lines
1.0 KiB
AutoHotkey
s1 := "aleph", p1 := 1/5.0 ; Input
|
|
s2 := "beth", p2 := 1/6.0
|
|
s3 := "gimel", p3 := 1/7.0
|
|
s4 := "daleth", p4 := 1/8.0
|
|
s5 := "he", p5 := 1/9.0
|
|
s6 := "waw", p6 := 1/10.0
|
|
s7 := "zayin", p7 := 1/11.0
|
|
s8 := "heth", p8 := 1-p1-p2-p3-p4-p5-p6-p7
|
|
n := 8, r0 := 0, r%n% := 1 ; auxiliary data
|
|
|
|
Loop % n-1
|
|
i := A_Index-1, r%A_Index% := r%i% + p%A_Index% ; cummulative distribution
|
|
|
|
Loop 1000000 {
|
|
Random R, 0, 1.0
|
|
Loop %n% ; linear search
|
|
If (R < r%A_Index%) {
|
|
c%A_Index%++
|
|
Break
|
|
}
|
|
}
|
|
; Output
|
|
Loop %n%
|
|
t .= s%A_Index% "`t" p%A_Index% "`t" c%A_Index%*1.0e-6 "`n"
|
|
Msgbox %t%
|
|
|
|
/*
|
|
output:
|
|
---------------------------
|
|
aleph 0.200000 0.199960
|
|
beth 0.166667 0.166146
|
|
gimel 0.142857 0.142624
|
|
daleth 0.125000 0.124924
|
|
he 0.111111 0.111226
|
|
waw 0.100000 0.100434
|
|
zayin 0.090909 0.091344
|
|
heth 0.063456 0.063342
|
|
---------------------------
|
|
*/
|