The Double Slit Experiment
BASH, 396 - 11 = 385 bytes
E='echo -en';$E "\e[2J\e[99A";while :;do sleep 0.01;for i in `seq $((($1+1)/2)) -1 1`;do p=$(((($1+1)/2 - $i)));[ $p -lt 0 ]&&p=$((-$p));p=$((2**(p+1)));if [ $RANDOM -lt $((32768/$p)) ];then [ $(($RANDOM%2)) -eq 1 ]&&i=$((($1+1)-i));sector=$(((i*2-1)-1));C=`tput cols`;R=`tput lines`;SS=$((C/($1*2-1)));SX=$((SS*sector));X=$((SX+(RANDOM%SS)));Y=$((RANDOM%R));$E "\e[$Y;${X}H*";break;fi;done;done
Unfortunately I cannot demonstrate this on TryItOnline because of the endless loop & ANSI escape sequences that move cursor, but you can still copy-paste it into your terminal!
Unminified version:
E='echo -en'
$E "\e[2J\e[99A"
while :
do
sleep 0.01
for i in `seq $((($1+1)/2)) -1 1`
do
p=$(((($1+1)/2 - $i)))
[ $p -lt 0 ] && p=$((-$p));
p=$((2**(p+1)))
if [ $RANDOM -lt $((32768/$p)) ]
then
[ $(($RANDOM%2)) -eq 1 ] && i=$((($1+1)-i));
sector=$(((i*2-1)-1))
C=`tput cols`
R=`tput lines`
SS=$((C/($1*2-1)))
SX=$((SS*sector))
X=$((SX+(RANDOM%SS)))
Y=$((RANDOM%R))
$E "\e[$Y;${X}H*"
break
fi
done
done
Python 2, 207 200 bytes
There is a method to this madness, I promise. Follows the probability interpretation I commented in the OP.
Edit: -7 bytes through some clever lazy evaluation (and removing some signs)
import time # not counted for byte total
import random as R,curses as C
r=R.randint
c=C.initscr()
h,w=c.getmaxyx()
n=input()
w/=2*n-1
while 1:
all(r(0,1)or c.addch(r(0,h-1),(i*(2-4*r(0,1))+n)*w-r(1,w),42)for i in range(n/2+1))
c.refresh()
time.sleep(0.1) # not counted for byte total
Mathematica, 231 bytes
(R=RandomInteger;p=20(#+1)+10;s=Array[0&,{20,6p-3}];i=(#+1)/2;Monitor[While[1<2,y=RandomChoice[Join[q=Riffle[Array[2^#&,i,0],Table[0,i-1]],Reverse@Most@q]->Array[Range[4#+1]&,i,0][[i]]];s[[R@19+1,10y-R@9]]=1;s],Grid[s//. 0->" "]])&
input
[5]
output