我们可以使用Fisher-Yates洗牌算法,在不使用缓冲区的情况下对连续数字进行洗牌。该算法的基本思想是在原数组中从后往前遍历数组,每次遍历时,随机交换当前遍历元素与之前任意一个元素的位置,直到遍历到数组的第一个元素为止。这样就能够将数组中的数字进行随机化,并保证每个数字的概率相等。
下面是使用Fisher-Yates洗牌算法对连续数字进行洗牌的示例代码:
import random
def shuffle_numbers(n):
nums = list(range(1, n+1))
for i in range(n-1, 0, -1):
j = random.randint(0, i)
nums[i], nums[j] = nums[j], nums[i]
return nums
# 示例:
print(shuffle_numbers(10))
输出:
[3, 9, 8, 5, 1, 4, 6, 7, 2, 10]