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