func NewNormalCumulative(sigma *big.Float, n uint, twoSided bool) *NormalCumulative {
	s := &NormalCumulative{
		normal:   newNormal(sigma, n),
		twoSided: twoSided,
	}
	s.precompute()
	s.sampleSize = new(big.Int).Set(s.precomputed[len(s.precomputed)-1])
	if s.twoSided {
		s.sampleSize.Mul(s.sampleSize, big.NewInt(2))
	}
	return s
}
NewNormalCumulative returns an instance of NormalCumulative sampler.
It assumes mean = 0. Values are precomputed when this function is
called, so that Sample merely returns a precomputed value.
package sample
import (
	"crypto/rand"
	"math"
	"math/big"
	"sort"
)
type NormalCumulative struct {
	*normal
	precomputed []*big.Int
	twoSided bool
	sampleSize *big.Int
}