Merge branch 'dev' of http://git.legu.cc/liwei_3d/go_dreamfactory into dev
This commit is contained in:
commit
0bf5f7b7ad
18
comm/core.go
18
comm/core.go
@ -2,10 +2,10 @@ package comm
|
||||
|
||||
import (
|
||||
"context"
|
||||
"math/rand"
|
||||
|
||||
"crypto/rand"
|
||||
"fmt"
|
||||
"go_dreamfactory/pb"
|
||||
"math/big"
|
||||
"reflect"
|
||||
"strings"
|
||||
|
||||
@ -93,15 +93,16 @@ func ProtoMarshal(rsp proto.Message, msg *pb.UserMessage) (ok bool) {
|
||||
/// 参数 权重数组 返回值 数组下标
|
||||
func GetRandW(sz []int32) int32 {
|
||||
if len(sz) > 0 {
|
||||
var _totalW int32 // 总权重
|
||||
var _tmpW int32 // 临时权重
|
||||
var _totalW int64 // 总权重
|
||||
var _tmpW int64 // 临时权重
|
||||
for _, v := range sz {
|
||||
_totalW += v
|
||||
_totalW += int64(v)
|
||||
}
|
||||
// 随机权重
|
||||
n, _ := rand.Int(rand.Reader, big.NewInt(_totalW))
|
||||
for i, v := range sz {
|
||||
_tmpW += v
|
||||
if rand.Int31n(_totalW) < _tmpW {
|
||||
_tmpW += int64(v)
|
||||
if n.Int64() < _tmpW {
|
||||
return int32(i)
|
||||
}
|
||||
}
|
||||
@ -117,7 +118,8 @@ func GetRandNum(min, max int32) int32 {
|
||||
return min
|
||||
}
|
||||
|
||||
return rand.Int31n(int32(max-min+1)) + min
|
||||
n, _ := rand.Int(rand.Reader, big.NewInt(int64(max-min+1))) //+1 是因为 rand方法范围是[0, max)
|
||||
return int32(n.Int64()) + min
|
||||
}
|
||||
|
||||
///通过uid获取用户所在区服
|
||||
|
Loading…
Reference in New Issue
Block a user