From aae6d7220fcc1bb7e58ef310e4716948d84cb433 Mon Sep 17 00:00:00 2001
From: dtapps
Date: Tue, 19 Mar 2024 13:41:02 +0800
Subject: [PATCH] - update
---
.gitignore | 4 ++--
README.md | 4 ++--
go.mod | 2 +-
gorandom.go | 12 ++++++++----
version.go | 2 +-
5 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/.gitignore b/.gitignore
index 4794692..c2fc790 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,6 @@
.idea
.vscode
*.log
-goinit.sh
-gomod.sh
+*_test.go
+go_mod.sh
/vendor/
\ No newline at end of file
diff --git a/README.md b/README.md
index cdb34f5..caa0924 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
📦 Golang Random
@@ -13,5 +13,5 @@
#### 安装
```go
-go get -v -u go.dtapp.net/gorandom
+go get -v -u go.dtapp.net/gorandom@v1.0.3
```
diff --git a/go.mod b/go.mod
index 2a5e8ef..3efd94b 100644
--- a/go.mod
+++ b/go.mod
@@ -1,3 +1,3 @@
module go.dtapp.net/gorandom
-go 1.18
+go 1.22
diff --git a/gorandom.go b/gorandom.go
index d20176f..1ed0fce 100644
--- a/gorandom.go
+++ b/gorandom.go
@@ -1,7 +1,7 @@
package gorandom
import (
- "math/rand"
+ "math/rand/v2"
"time"
)
@@ -15,7 +15,11 @@ func random[T int | int64](n T, chars string) string {
if n <= 0 {
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)
l := len(chars)
var i T = 0
@@ -23,7 +27,7 @@ func random[T int | int64](n T, chars string) string {
if i >= n {
break
}
- bytes[i] = chars[r.Intn(l)]
+ bytes[i] = chars[r.IntN(l)]
i++
}
return string(bytes)
@@ -54,7 +58,7 @@ func Range(min int64, max int64) int64 {
var number int64
for {
// 生成在范围 [min, max) 内的随机数
- number = int64(rand.Intn(int(max)-int(min)) + int(min))
+ number = int64(rand.IntN(int(max)-int(min)) + int(min))
// 检查随机数是否大于 min 且小于 max
if number > min && number < max {
diff --git a/version.go b/version.go
index c8bf7c3..cadcf9f 100644
--- a/version.go
+++ b/version.go
@@ -1,3 +1,3 @@
package gorandom
-const Version = "1.0.2"
+const Version = "1.0.3"