goProject/trunk/goutil/intUtil/int.go

45 lines
868 B
Go
Raw Permalink Normal View History

2025-01-06 16:01:02 +08:00
package intUtil
import (
"fmt"
"math/rand"
"time"
)
// ShuffleIntDigits 打乱整数的各个数字位置并返回新的整数
func ShuffleIntDigits(num int64) (int64, error) {
if num < 0 {
return 0, fmt.Errorf("number must be non-negative")
}
var digits []int64
for num > 0 {
digits = append(digits, num%10)
num /= 10
}
// 如果原始数字是0直接返回
if len(digits) == 0 {
return 0, nil
}
// 反转切片以保持原来的数字顺序
for i, j := 0, len(digits)-1; i < j; i, j = i+1, j-1 {
digits[i], digits[j] = digits[j], digits[i]
}
// 打乱数字切片
rand.Seed(time.Now().UnixNano())
rand.Shuffle(len(digits), func(i, j int) {
digits[i], digits[j] = digits[j], digits[i]
})
// 重新组合为新的整数
result := int64(0)
for _, digit := range digits {
result = result*10 + digit
}
return result, nil
}