master v1.0.3
dtapps 2 months ago
parent e413b27998
commit aae6d7220f

4
.gitignore vendored

@ -4,6 +4,6 @@
.idea .idea
.vscode .vscode
*.log *.log
goinit.sh *_test.go
gomod.sh go_mod.sh
/vendor/ /vendor/

@ -1,5 +1,5 @@
<h1> <h1>
<a href="https://www.dtapp.net/">Golang Random</a> <a href="https://www.dtapp.net/">Golang</a>
</h1> </h1>
📦 Golang Random 📦 Golang Random
@ -13,5 +13,5 @@
#### 安装 #### 安装
```go ```go
go get -v -u go.dtapp.net/gorandom go get -v -u go.dtapp.net/gorandom@v1.0.3
``` ```

@ -1,3 +1,3 @@
module go.dtapp.net/gorandom module go.dtapp.net/gorandom
go 1.18 go 1.22

@ -1,7 +1,7 @@
package gorandom package gorandom
import ( import (
"math/rand" "math/rand/v2"
"time" "time"
) )
@ -15,7 +15,11 @@ func random[T int | int64](n T, chars string) string {
if n <= 0 { if n <= 0 {
return "" return ""
} }
r := rand.New(rand.NewSource(time.Now().UnixNano()))
// 随机数生成器,加入时间戳保证每次生成的随机数不一样
seed := time.Now().UnixNano() // rand内部运算的随机数
r := rand.New(rand.NewPCG(uint64(seed), uint64(seed))) // rand计算得到的随机数
bytes := make([]byte, n, n) bytes := make([]byte, n, n)
l := len(chars) l := len(chars)
var i T = 0 var i T = 0
@ -23,7 +27,7 @@ func random[T int | int64](n T, chars string) string {
if i >= n { if i >= n {
break break
} }
bytes[i] = chars[r.Intn(l)] bytes[i] = chars[r.IntN(l)]
i++ i++
} }
return string(bytes) return string(bytes)
@ -54,7 +58,7 @@ func Range(min int64, max int64) int64 {
var number int64 var number int64
for { for {
// 生成在范围 [min, max) 内的随机数 // 生成在范围 [min, max) 内的随机数
number = int64(rand.Intn(int(max)-int(min)) + int(min)) number = int64(rand.IntN(int(max)-int(min)) + int(min))
// 检查随机数是否大于 min 且小于 max // 检查随机数是否大于 min 且小于 max
if number > min && number < max { if number > min && number < max {

@ -1,3 +1,3 @@
package gorandom package gorandom
const Version = "1.0.2" const Version = "1.0.3"

Loading…
Cancel
Save