python环境下要代码,随机生成n个1-1000的整数,n由用户输入,去除相同数字保留一个,从大到小排序
import random
n = int(input())
res = random.sample(range(1001),n)
print(sorted(res, reverse=True))
set集合可以保证数据不重复
import random
# 获取用户输入并将值转为int类型
n = int(input("请输入随机数数量:"))
# 定义一个空的set集合
setlist = set()
# 循环生成随机数,并将随机数放入set集合中
for i in range(n):
r = random.randint(1,1000)
setlist.add(r)
# 将set集合转为list集合并
randomlist = list(setlist)
# 从大到小排序
randomlist.sort(reverse=True)
print(randomlist)
import random
n = int(input())
ls = [random.randint(1,1000) for _ in range(n)]
ls = list(set(ls))
ls.sort(reverse = True)
print(ls)
你所谓n个是保证输出有n个还是?随机获得n个,如果有重复就舍弃,则最终输出不足n个也不管? 后一种这样的实现参考 zhouwhui椆 或者 Hann Yang 两位的。
如果是需要输出n个不重复的结果,则用洗牌算法其实是比较好的,具体实现如下:
import random
n = int(input())
rt = [ x for x in range(1,1001)]
for i in range(1000): # 洗牌交换
t=random.randint(0,1000)
c=rt[i]
rt[i]=rt[t]
rt[t]=c
rt=rt[:n] # 取前n个元素
rt=sorted(rt,reverse = True)
print(rt)
import random
n = int(input())
ls = [random.randint(1,1000) for i in range(n)]
ls = list(set(ls))
ls=sorted(ls,reverse = True)
print(ls)
import random
n=int(input())
print(sorted(set([random.randint(1,1001) for _ in range(n)]), reverse=True))
import random
import numpy as np
n = int(input())
num = [random.randint(1, 1000) for i in range(n)]
number, counts = np.unique(num, return_counts = True)
number = list(number)
number.sort()
print(number)
import random
a = int(input())
ls = []
for i in range(a):
ls.append(random.randint(1,1000))
ls = set(ls)
ls = sorted(ls,reverse = True)
print(ls)