Example script for random numbers

Generation and test of random numbers with Gaussian distribution

* agauss test in ngspice
* generate a sequence of gaussian distributed random numbers.
* test the distribution by sorting the numbers into 
* a histogram (buckets) 
.control
  define agauss(nom, avar, sig) (nom + avar/sig * sgauss(0))
  let mc_runs = 200
  let run = 0
  let no_buck = 8                $ number of buckets
  let bucket = unitvec(no_buck)  $ each element contains 1
  let delta = 3e-11    $ width of each bucket, depends 
                       $ on avar and sig
  let lolimit = 1e-09 - 3*delta 
  let hilimit = 1e-09 + 3*delta  
  
  dowhile run < mc_runs
    let val = agauss(1e-09, 1e-10, 3) $ get the random number
    if (val < lolimit)
        let bucket[0] = bucket[0] + 1 $ 'lowest' bucket
    end
    let part = 1    
    dowhile part < (no_buck - 1)
      if ((val < (lolimit + part*delta)) & 
+         (val > (lolimit + (part-1)*delta)))
        let bucket[part] = bucket[part] + 1
        break
      end
      let part = part + 1     
    end
    if (val > hilimit)
* 'highest' bucket
      let bucket[no_buck - 1] = bucket[no_buck - 1] + 1 
    end 
    let run = run + 1 
  end

  let part = 0
  dowhile part < no_buck
    let value = bucket[part] - 1
    set value = "$&value"
* print the bucket's contents
    echo $value                                
    let part = part + 1 
  end
  
.endc
.end