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