Compare commits

..

No commits in common. 'master' and 'v1.0.2' have entirely different histories.

4
.gitignore vendored

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

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

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

@ -1,7 +1,7 @@
package gorandom package gorandom
import ( import (
"math/rand/v2" "math/rand"
"time" "time"
) )
@ -15,11 +15,7 @@ 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
@ -27,7 +23,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)
@ -58,7 +54,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.3" const Version = "1.0.2"

Loading…
Cancel
Save