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 }