597
598// NewWithSeed returns a new instance of Faker instance with a given seed
599func NewWithSeed(src rand.Source) (f Faker) {
600 generator := rand.New(src)601 f = Faker{Generator: generator}
602 return
603}
17func (YouTube) GenerateVideoID() (videoID string) {
18 b := make([]byte, 11)
19 for i := range b {
20 b[i] = charset[rand.Intn(len(charset))]21 }
22 return string(b)
23}
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)
}