1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
package main
import (
"math/rand"
"os"
"strconv"
"github.com/gonum/stat/distuv"
)
const (
N = 1e6
Mu = 10
Sigma = 3
seed = 42
)
func main() {
// Generate uniform and normal data
uniform := rand.New(rand.NewSource(seed))
dist := distuv.Normal{
Mu: Mu,
Sigma: Sigma,
Source: rand.New(rand.NewSource(seed)),
}
uniformData := make([]float64, N)
normalData := make([]float64, N)
for i := range normalData {
normalData[i] = dist.Rand()
uniformData[i] = uniform.Float64() * 100
}
smallData := []float64{1, 2, 3, 4, 5, 5, 4, 3, 2, 1}
writeData("uniform.dat", uniformData)
writeData("normal.dat", normalData)
writeData("small.dat", smallData)
}
func writeData(name string, data []float64) {
f, err := os.Create(name)
if err != nil {
panic(err)
}
defer f.Close()
buf := make([]byte, 0, 64)
for _, x := range data {
buf = strconv.AppendFloat(buf, x, 'f', -1, 64)
_, err := f.Write(buf)
if err != nil {
panic(err)
}
_, err = f.Write([]byte{'\n'})
if err != nil {
panic(err)
}
buf = buf[0:0]
}
}
|