1st - I completely agree that specifying "randomly chosen points in a sphere" is unambiguous.
3rd - I am getting a different result than Charlie simulating the problem: 47% acute. I haven't checked very thoroughly, however.
(I didn't see the z coord used in C's code.... Here is my code
rabbit-3:~ lord$ acu
total triangles, fraction acute : 10000 0.472000003
total triangles, fraction acute : 100000 0.471520007
total triangles, fraction acute : 1000000 0.470748007
total triangles, fraction acute : 10000000 0.471305400
program acu
implicit none
real pi,s(3),a(3),x(3),y(3),z(3),f,fok,dum,an,suman
integer iseed,i,j,tot,totok,allcnt,acnt,power,in(2,3),k1,k2
data in/2,3,1,3,1,2/
pi=3.1415926
iseed=time8()
call srand(iseed)
do power = 4,7
acnt=0
tot=0
totok=0
allcnt=0
do 2 i=1,10**power
c do 2 i=1,20
do j=1,3
1 x(j)=rand()-0.5
y(j)=rand()-0.5
z(j)=rand()-0.5
tot=tot+1
dum = (sqrt(x(j)**2+y(j)**2+z(j)**2))
c print*,'length= ',dum
if(sqrt(x(j)**2+y(j)**2+z(j)**2).gt.0.5)go to 1
totok=totok+1
c print*,'yes'
enddo
allcnt=allcnt+1
do j=1,3
k1=in(1,j)
k2=in(2,j)
s(j)=sqrt((x(k1)-x(k2))**2+(y(k1)-y(k2))**2+(z(k1)-z(k2))**2)
c print*, 'j side(j) = ',j,s(j)
enddo
c suman=0
do j=1,3
k1=in(1,j)
k2=in(2,j)
c print*,'three sides ',j,k1,k2
a(j)=acos( (s(k1)**2+s(k2)**2-s(j)**2 ) / (2*s(k1)*s(k2)) )
c an=a(j)*180./pi
c if(i.lt.11)print*,i,j,an
c suman=suman+an
c print*,' vertex, angle ',j,an
c if(j.eq.3)print*,' sum interior angles',suman
if (a(j).gt.3.141592/2.)go to 2
enddo
acnt=acnt+1
2 continue
fok=(1.*totok)/tot
c print*,'tot totok fok = ',tot,totok,fok
f=(1.*acnt)/allcnt
print*,' total triangles, fraction acute :',allcnt,f
enddo
end