Golang - Generate Random Number
Biasanya generate angka random dipakai untuk membuat passcode, ID (biasanya campuran angka dan huruf), dll. Di artikel ini kita hanya membuat angka acak dengan panjang angka sesuai sama yang kita inginkan. Di golang ada built in package math/rand untuk membuat data acak.
Basis dari package tersebut ialah PRNG atau pseudo-random number generator. Deret angka random yang dihasilkan sangat tergantung dengan angka seed yang digunakan. Oleh karena itu disini kita menggunkan package time untuk memanggil fungsi waktu sekarang dengan format sampai nano-second untuk mendapatkan random angka yang tak mudah ditebak/berulang.
import (
"math/rand"
"strconv"
"time"
)
func GenerateRandomNumber(lengthNumber int) int {
var charset = "0123456789"
var seededRand *rand.Rand = rand.New(rand.NewSource(time.Now().UnixNano()))
b := make([]byte, lengthNumber)
for i := range b {
b[i] = charset[seededRand.Intn(len(charset))]
}
byteToInt, _ := strconv.Atoi(string(b))
return byteToInt
}
Catatan: untuk nomor acak yang sensitif terhadap keamanan, gunakan packge crypto/rand sebagai gantinya.