Data update

This commit is contained in:
Ingy döt Net 2026-02-01 16:33:20 -08:00
parent 5150844a7d
commit 4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions

View file

@ -1,32 +0,0 @@
with Ada.Numerics.Discrete_Random;
with Ada.Text_IO; use Ada.Text_IO;
procedure Sleeping_Beauty is
type Coin is (Heads, Tails);
package Random_Coin is new Ada.Numerics.Discrete_Random (Coin); use Random_Coin;
package FIO is new Float_IO (Float);
Tosser : Generator;
Probability : Float;
function Experiment (Tosses : Integer) return Float is
Awakenings, Heads_Count : Integer := 0;
begin
for Iteration in 1 .. Tosses loop
case Random (Tosser) is
when Heads =>
Awakenings := Awakenings + 1;
Heads_Count := Heads_Count + 1;
when Tails =>
Awakenings := Awakenings + 2;
end case;
end loop;
Put_Line ("Awakenings over" & Tosses'Image & " iterations:" & Awakenings'Image);
return Float (Heads_Count) / Float (Awakenings) * 100.0;
end Experiment;
begin
Reset (Tosser);
Probability := Experiment (1_000_000);
Put ("Percentage probability of heads on waking:");
FIO.Put (Probability, 3, 5, 0);
end Sleeping_Beauty;

View file

@ -4,8 +4,8 @@ sleepingBeauty: function [reps][
do.times: reps [
coin: random 0 1
wakings: wakings + 1
if? coin = 0 -> heads: heads + 1
else -> wakings: wakings + 1
switch coin = 0 -> heads: heads + 1
-> wakings: wakings + 1
]
print ["Wakings over" reps "repetitions =" wakings]
return 100.0 * heads//wakings

View file

@ -1,14 +1,15 @@
(phixonline)-->
<span style="color: #008080;">constant</span> <span style="color: #000000;">iterations</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1_000_000</span><span style="color: #0000FF;">,</span>
<span style="color: #000000;">fmt</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">"""
Wakings over %,d repetitions = %,d
Percentage probability of heads on waking = %f%%
"""</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">heads</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">wakings</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">iterations</span> <span style="color: #008080;">do</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">flip</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">rand</span><span style="color: #0000FF;">(</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- 1==heads, 2==tails</span>
<span style="color: #000000;">wakings</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">flip</span><span style="color: #0000FF;">==</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">heads</span> <span style="color: #0000FF;">+=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">flip</span><span style="color: #0000FF;">==</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">fmt</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">iterations</span><span style="color: #0000FF;">,</span><span style="color: #000000;">wakings</span><span style="color: #0000FF;">,</span><span style="color: #000000;">heads</span><span style="color: #0000FF;">/</span><span style="color: #000000;">wakings</span><span style="color: #0000FF;">*</span><span style="color: #000000;">100</span><span style="color: #0000FF;">})</span>
<!--
constant iterations = 1_000_000,
fmt = """
Wakings over %,d repetitions = %,d
Percentage probability of heads on waking = %f%%
"""
integer heads = 0, wakings = 0
for i=1 to iterations do
integer flip = rand(2) -- 1==heads, 2==tails
wakings += 1 + (flip==2)
heads += (flip==1)
end for
-- or (same output, <1% of the time):
--integer heads = sum(sq_eq(sq_rand(repeat(2,iterations)),1)),
-- wakings = 2*iterations-heads
printf(1,fmt,{iterations,wakings,heads/wakings*100})