54 }
55
56 for i := 1; i < len(r.Values)-1; i++ {
57 r.Values[i+1] = r.Values[i] + (rand.Float64() - 0.5) 58 }
59 return []*types.MetricData{&r}, nil
60}
112
113func getData(rangeSize int) []float64 {
114 var data = make([]float64, rangeSize)
115 var r = rand.New(rand.NewSource(99))116 for i := range data {
117 data[i] = math.Floor(1000 * r.Float64())
118 }
math/rand
is much faster for applications that don’t need crypto-level or security-related random data generation. crypto/rand
is suited for secure and crypto-ready usage, but it’s slower. But in most cases, crypto/rand
is likely to be more suitable, unless the performance is critical but the application's security is not (which is rare).
It is highly recommended to use crypto/rand
when needing to be secure with random numbers such as generating session ID in a web application.
package main
import "math/rand"
func main() {
bad := rand.Int()
println(bad)
}
package main
import "crypto/rand"
func main() {
good, _ := rand.Read(nil)
println(good)
}