Python 从特定范围生成一组已排序的随机数

Python 从特定范围生成一组已排序的随机数,python,random,generator,Python,Random,Generator,我想生成一组x唯一的随机数,并用Python对它们进行排序。例如: 范围(1000,10000) x=100 我想出了导入random并使用random.randrange方法,然后循环得到100个随机数,最后对它们进行排序 然而,我不知道如何获得唯一的数字(这样它们就不会重复)-我应该验证每个循环吗?或者还有其他更简单的方法吗?我应该如何对它们进行排序?使用 排序部分简单易用 默认情况下,这将从最小的数字到最大的数字进行排序,但它需要一个可选的键参数来确定排序的依据 还有一个函数,它不修改列表

我想生成一组x唯一的随机数,并用Python对它们进行排序。例如: 范围(1000,10000) x=100

我想出了导入random并使用random.randrange方法,然后循环得到100个随机数,最后对它们进行排序

然而,我不知道如何获得唯一的数字(这样它们就不会重复)-我应该验证每个循环吗?或者还有其他更简单的方法吗?我应该如何对它们进行排序?

使用

排序部分简单易用

默认情况下,这将从最小的数字到最大的数字进行排序,但它需要一个可选的
参数来确定排序的依据

还有一个函数,它不修改列表,而是返回已排序的列表

numbers_sorted = sorted(numbers)
它还有一个可选的
参数。

实现了itertools配方,如果给定排序输入,该配方将返回排序后的随机数

import more_itertools as mit

mit.random_combination(range(1000, 10000), r=100)
# (1016, 1112, 1233, 1367, 1446, 1460, 1518, 1807, 1832, 1956, ...)
这与返回未排序结果的
random.sample
不同


详细信息

看看菜谱,我们就知道为什么要建立这个订单了

发件人:

range()
固有地被排序,并成为从中选择随机元素的
池。虽然索引是随机选择的,但它们稍后会进行排序。由于对
索引
都进行了排序,因此也对结果进行了排序

总之,这与@Volatility的答案相同,只是排序是为您处理的


Cavaet:要求iterable的长度超过
r
的值,否则会引发错误。

谢谢@Volatility!没想到这么容易。还有一件事——有没有办法将这些数字导出到csv或xml格式?
numbers_sorted = sorted(numbers)
import more_itertools as mit

mit.random_combination(range(1000, 10000), r=100)
# (1016, 1112, 1233, 1367, 1446, 1460, 1518, 1807, 1832, 1956, ...)
def random_combination(iterable, r):
    """Return a random *r* length subsequence of the elements in *iterable*.
        >>> random_combination(range(5), 3)  # doctest:+SKIP
        (2, 3, 4)
    This equivalent to taking a random selection from
    ``itertools.combinations(iterable, r)``.
    """
    pool = tuple(iterable)
    n = len(pool)
    indices = sorted(sample(range(n), r))
    return tuple(pool[i] for i in indices)