你可以用以下代码测试一下概率。 
 
[Fortran] syntaxhighlighter_viewsource syntaxhighlighter_copycode Program Main
  real :: a
  integer(8) :: i = 0_8 , j
  integer(8) :: ddc(38) = 0
  call RANDOM_SEED()
  do
    call RANDOM_NUMBER(a)
    j = int(-log10(a)) + 1
    ddc(j) = ddc(j) + 1
    i = i + 1_8
    if( mod(i,100000000_8) == 0_8 ) then
      write(*,'("Total:",g0)') i
      write(*,'(*(5i16,/))') ddc
      write(*,'("check:",g0)') sum(ddc)
    end if
  end do  
  read(*,*) 
End Program Main 
 
这个代码用来统计,N次取随机数的结果,其结果各数量级的个数,也就是 0.1以内的个数,0.01以内的个数,0.001以内的个数... 
当 N 足够大时,个数之间的比例大约是  
0.9 , 0.09 , 0.009 .... 加起来约等于 1 
 
如图: 
 
 
 
也就是说,我算了 20亿次,才得到一个 e-10 次方数量级的数。 
你要想得到 0 ,你需要大约10次得到 e-38 次方数量级的数的机会。 
 |