Lua生成随机小数和整数
-- 生成随机小数
function randomFloat(min, max, decimals)
-- 设置默认保留1位小数
decimals = decimals or 1
-- 生成一个范围在[min, max]之间的随机浮点数
local randomValue = min + math.random() * (max - min)
-- 计算四舍五入的倍数
local multiplier = 10 ^ decimals
-- 四舍五入到指定小数位
local roundedValue = math.floor((randomValue * multiplier) + 0.5) / multiplier
return roundedValue
end
-- 生成一个范围在[min, max]之间的随机整数
function random(min, max)
return math.random(min, max)
end
可以把这两个函数,合并成一个通用函数。自动根据参数类型,生成随机小数或整数。接下来使用go实现:
Go生成随机小数和整数
// Random 生成随机数函数
// 参数:
// min: 最小值(可以是整数或浮点数)
// max: 最大值(可以是整数或浮点数)
// decimals: 可选参数,保留小数位数(仅当返回浮点数时有效,默认为2)
// 返回值:
// 当min和max都是整数时返回整数
// 当min或max是浮点数时返回保留指定小数位的浮点数
// 当decimals为nil时,浮点数默认保留2位小数
func Random(min, max interface{}, decimals ...interface{}) float64 {
// 将参数转换为float64
minFloat, err1 := toFloat64(min)
maxFloat, err2 := toFloat64(max)
if err1 != nil || err2 != nil {
return 0
}
// 生成随机数
rand.Seed(time.Now().UnixNano())
randomValue := minFloat + rand.Float64()*(maxFloat-minFloat)
// 判断是否需要返回整数
isIntMin, _ := isInt(min)
isIntMax, _ := isInt(max)
if isIntMin && isIntMax {
// 如果都是整数,返回整数
return float64(rand.Intn(int(maxFloat-minFloat+1))) + minFloat
}
// 处理小数位数
decimalPlaces := 2 // 默认保留2位小数
if len(decimals) > 0 {
if d, ok := decimals[0].(float64); ok {
decimalPlaces = int(d)
} else if d, ok := decimals[0].(int); ok {
decimalPlaces = d
}
}
// 四舍五入到指定小数位
multiplier := math.Pow(10, float64(decimalPlaces))
roundedValue := math.Floor((randomValue*multiplier)+0.5) / multiplier
return roundedValue
}
// toFloat64 将任意类型转换为float64
func toFloat64(v interface{}) (float64, error) {
switch val := v.(type) {
case int:
return float64(val), nil
case int64:
return float64(val), nil
case float32:
return float64(val), nil
case float64:
return val, nil
case string:
return strconv.ParseFloat(val, 64)
default:
return 0, errors.New("无法转换为float64")
}
}
// isInt 判断值是否为整数
func isInt(v interface{}) (bool, error) {
switch val := v.(type) {
case int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64:
return true, nil
case float32:
return val == float32(int(val)), nil
case float64:
return val == float64(int(val)), nil
default:
return false, nil
}
}
1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
飞云脚本圈: 586333520
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 【懒人精灵】生成随机小数或整数的两种方法,go语言混合开发
飞云脚本圈: 586333520

Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 【懒人精灵】生成随机小数或整数的两种方法,go语言混合开发