Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
35
Task/Probabilistic-choice/ERRE/probabilistic-choice.erre
Normal file
35
Task/Probabilistic-choice/ERRE/probabilistic-choice.erre
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
PROGRAM PROB_CHOICE
|
||||
|
||||
DIM ITEM$[7],PROB[7],CNT[7]
|
||||
|
||||
BEGIN
|
||||
ITEM$[]=("aleph","beth","gimel","daleth","he","waw","zayin","heth")
|
||||
|
||||
PROB[0]=1/5.0 PROB[1]=1/6.0 PROB[2]=1/7.0 PROB[3]=1/8.0
|
||||
PROB[4]=1/9.0 PROB[5]=1/10.0 PROB[6]=1/11.0 PROB[7]=1759/27720
|
||||
SUM=0
|
||||
FOR I%=0 TO UBOUND(PROB,1) DO
|
||||
SUM=SUM+PROB[I%]
|
||||
END FOR
|
||||
|
||||
IF ABS(SUM-1)>1E-6 THEN
|
||||
PRINT("Probabilities don't sum to 1")
|
||||
ELSE
|
||||
FOR TRIAL=1 TO 1E6 DO
|
||||
R=RND(1)
|
||||
P=0
|
||||
FOR I%=0 TO UBOUND(PROB,1) DO
|
||||
P+=PROB[I%]
|
||||
IF R<P THEN
|
||||
CNT[I%]+=1
|
||||
EXIT
|
||||
END IF
|
||||
END FOR
|
||||
END FOR
|
||||
PRINT("Item actual theoretical")
|
||||
PRINT("---------------------------------")
|
||||
FOR I%=0 TO UBOUND(ITEM$,1) DO
|
||||
WRITE("\ \ #.###### #.######";ITEM$[I%],CNT[I%]/1E6,PROB[I%])
|
||||
END FOR
|
||||
END IF
|
||||
END PROGRAM
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
' FB 1.05.0 Win64
|
||||
|
||||
Dim letters (0 To 7) As String = {"aleph", "beth", "gimel", "daleth", "he", "waw", "zayin", "heth"}
|
||||
Dim actual (0 To 7) As Integer '' all zero by default
|
||||
Dim probs (0 To 7) As Double = {1/5.0, 1/6.0, 1/7.0, 1/8.0, 1/9.0, 1/10.0, 1/11.0}
|
||||
Dim cumProbs (0 To 7) As Double
|
||||
|
||||
cumProbs(0) = probs(0)
|
||||
For i As Integer = 1 To 6
|
||||
cumProbs(i) = cumProbs(i - 1) + probs(i)
|
||||
Next
|
||||
cumProbs(7) = 1.0
|
||||
probs(7) = 1.0 - cumProbs(6)
|
||||
|
||||
Randomize
|
||||
Dim rand As Double
|
||||
Dim n As Double = 1000000
|
||||
Dim sum As Double = 0.0
|
||||
|
||||
For i As Integer = 1 To n
|
||||
rand = Rnd '' random number where 0 <= rand < 1
|
||||
Select case rand
|
||||
Case Is <= cumProbs(0)
|
||||
actual(0) += 1
|
||||
Case Is <= cumProbs(1)
|
||||
actual(1) += 1
|
||||
Case Is <= cumProbs(2)
|
||||
actual(2) += 1
|
||||
Case Is <= cumProbs(3)
|
||||
actual(3) += 1
|
||||
Case Is <= cumProbs(4)
|
||||
actual(4) += 1
|
||||
Case Is <= cumProbs(5)
|
||||
actual(5) += 1
|
||||
Case Is <= cumProbs(6)
|
||||
actual(6) += 1
|
||||
Case Else
|
||||
actual(7) += 1
|
||||
End Select
|
||||
Next
|
||||
|
||||
Dim sumActual As Double = 0
|
||||
|
||||
Print "Letter", " Actual", "Expected"
|
||||
Print "------", "--------", "--------"
|
||||
For i As Integer = 0 To 7
|
||||
Print letters(i),
|
||||
Print Using "#.######"; actual(i)/n;
|
||||
sumActual += actual(i)/n
|
||||
Print , Using "#.######"; probs(i)
|
||||
Next
|
||||
|
||||
Print , "--------", "--------"
|
||||
Print , Using "#.######"; sumActual;
|
||||
Print , Using "#.######"; 1.000000
|
||||
|
||||
Print
|
||||
Print "Press any key to quit"
|
||||
Sleep
|
||||
47
Task/Probabilistic-choice/Nim/probabilistic-choice.nim
Normal file
47
Task/Probabilistic-choice/Nim/probabilistic-choice.nim
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
import tables, math, strutils, times
|
||||
|
||||
const
|
||||
num_trials = 1000000
|
||||
precsn = 6
|
||||
|
||||
var start = cpuTime()
|
||||
|
||||
var probs = initTable[string,float](16)
|
||||
probs.add("aleph", 1/5.0)
|
||||
probs.add("beth", 1/6.0)
|
||||
probs.add("gimel", 1/7.0)
|
||||
probs.add("daleth", 1/8.0)
|
||||
probs.add("he", 1/9.0)
|
||||
probs.add("waw", 1/10.0)
|
||||
probs.add("zayin", 1/11.0)
|
||||
probs.add("heth", 1759/27720)
|
||||
|
||||
var samples = initTable[string,int](16)
|
||||
for i, j in pairs(probs):
|
||||
samples.add(i,0)
|
||||
|
||||
randomize()
|
||||
for i in 1 .. num_trials:
|
||||
var z = random(1.0)
|
||||
|
||||
for j,k in pairs(probs):
|
||||
if z < probs[j]:
|
||||
samples[j] = samples[j] + 1
|
||||
break
|
||||
else:
|
||||
z = z - probs[j]
|
||||
|
||||
var s1, s2: float
|
||||
|
||||
echo("Item ","\t","Target ","\t","Results ","\t","Difference")
|
||||
echo("==== ","\t","====== ","\t","======= ","\t","==========")
|
||||
for i, j in pairs(probs):
|
||||
s1 += samples[i]/num_trials*100.0
|
||||
s2 += probs[i]*100.0
|
||||
echo( i,
|
||||
"\t", formatFloat(probs[i],ffDecimal,precsn),
|
||||
"\t", formatFloat(samples[i]/num_trials,ffDecimal,precsn),
|
||||
"\t", formatFloat(100.0*(1.0-(samples[i]/num_trials)/probs[i]),ffDecimal,precsn),"%")
|
||||
echo("======","\t","======= ","\t","======== ")
|
||||
echo("Total:","\t",formatFloat(s2,ffDecimal,2)," \t",formatFloat(s1,ffDecimal,2))
|
||||
echo("\n",formatFloat(cpuTime()-start,ffDecimal,2)," secs")
|
||||
28
Task/Probabilistic-choice/Phix/probabilistic-choice.phix
Normal file
28
Task/Probabilistic-choice/Phix/probabilistic-choice.phix
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
constant {names, probs} = columnize({{"aleph", 1/5},
|
||||
{"beth", 1/6},
|
||||
{"gimel", 1/7},
|
||||
{"daleth", 1/8},
|
||||
{"he", 1/9},
|
||||
{"waw", 1/10},
|
||||
{"zayin", 1/11},
|
||||
{"heth", 1759/27720}})
|
||||
|
||||
sequence results = repeat(0,length(names))
|
||||
|
||||
atom r
|
||||
constant lim = 1000000
|
||||
for j=1 to lim do
|
||||
r = rnd()
|
||||
for i=1 to length(probs) do
|
||||
r -= probs[i]
|
||||
if r<=0 then
|
||||
results[i]+=1
|
||||
exit
|
||||
end if
|
||||
end for
|
||||
end for
|
||||
|
||||
printf(1," Name Actual Expected\n")
|
||||
for i=1 to length(probs) do
|
||||
printf(1,"%6s %8.6f %8.6f\n",{names[i],results[i]/lim,probs[i]})
|
||||
end for
|
||||
41
Task/Probabilistic-choice/Sidef/probabilistic-choice.sidef
Normal file
41
Task/Probabilistic-choice/Sidef/probabilistic-choice.sidef
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
define TRIALS = 1e4;
|
||||
|
||||
func prob_choice_picker(options) {
|
||||
var n = 0;
|
||||
var a = [];
|
||||
options.each { |k,v|
|
||||
n += v;
|
||||
a << [n, k];
|
||||
}
|
||||
func {
|
||||
var r = 1.rand;
|
||||
a.first{|e| r <= e[0] }[1];
|
||||
}
|
||||
}
|
||||
|
||||
var ps = Hash(
|
||||
aleph => 1/5,
|
||||
beth => 1/6,
|
||||
gimel => 1/7,
|
||||
daleth => 1/8,
|
||||
he => 1/9,
|
||||
waw => 1/10,
|
||||
zayin => 1/11
|
||||
)
|
||||
|
||||
ps{:heth} = (1 - ps.values.sum)
|
||||
|
||||
var picker = prob_choice_picker(ps)
|
||||
var results = Hash()
|
||||
|
||||
TRIALS.times {
|
||||
results{picker()} := 0 ++;
|
||||
}
|
||||
|
||||
say "Event Occurred Expected Difference";
|
||||
for k,v in (results.sort_by {|k| results{k} }.reverse) {
|
||||
printf("%-6s %f %f %f\n",
|
||||
k, v/TRIALS, ps{k},
|
||||
abs(v/TRIALS - ps{k})
|
||||
);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue