python中随机函数
想用python写一个随机点名的代码,我自己尝试用random.randint()来表达,但我发现使用random()来表达会一个问题,就是有时会重复,比如:import random
num = random.randint(0,50)
print(num)
当我去运行的时候,有时会打印1,有时也会打印2,但有时又会打印1,就会出现重新的数字,我想打印十次,但每次打印出来的数字都是不同的,该怎么实现呢?
如果有哪位大佬知道,麻烦能否耽误大家几分钟的时候教我一下,鄙人万分感谢!
可以用random.sample{:5_102:}
这样取出的数据不会重复
说明:
random.sample([要取数据的列表], 要取出的数据个数)
返回值是一个列表{:5_109:} 本帖最后由 jackz007 于 2022-10-7 21:28 编辑
这个代码会在 的范围内随机产生 50 个不重复的元素列表
import random
c , d = 0 , []
while c < 50:
x = random . randint(1 , 50)
if not x in d:
d . append(x)
c += 1
print(d)
运行实况:
D:\\Python>python x.py
D:\\Python>python x.py
D:\\Python>python x.py
D:\\Python>python x.py
D:\\Python> 我有个另外的想法:
import random
li = # 1-50的列表
random.shuffle(li)
print(li.pop())# pop()会弹出并返回列表最末尾的值
每次直接从后面弹就是了,或者每次再shuffle一下 jackz007 发表于 2022-10-7 21:22
这个代码会在 的范围内随机产生 50 个不重复的元素列表
运行实况:
谢谢大佬的回答,本来我想给鱼币给您的,但我不知道如何给,抱歉!但还是十分谢谢您能抽空回复我的问题,谢谢!
我在大佬基础上添加了自己的一些想法,但发现还是会存在一些问题,但自己又说不上来.
import random
c , d = 0 , []
list1 =['刘德华','黎明','郭富城','张学友','任贤齐','周杰伦','谢霆锋','周润发','张国荣','周星驰','吴孟达']
num = random.randint(0,(len(list1)-1))
print(num)
# num = int(input('请输入数字随机偷取的名额:'))
while c <= len(list1):
x = random . choice(list1)
if not x in d:
d . append(x)
c += 1
print(d)
print(d)
本帖最后由 jackz007 于 2022-10-8 14:22 编辑
我@小甲鱼 发表于 2022-10-8 13:59
谢谢大佬的回答,本来我想给鱼币给您的,但我不知道如何给,抱歉!但还是十分谢谢您能抽空回复我的问题,谢 ...
import random
c , d = 0 , []
list1 = ['刘德华','黎明','郭富城','张学友','任贤齐','周杰伦','谢霆锋','周润发','张国荣','周星驰','吴孟达']
while c < len(list1) : # 必须是 "<",不可以 "<=" 会死循环
x = random . choice(list1)
if not x in d:
d . append(x)
c += 1 # c = c + 1 应该和列表元素的添加同步,否则,d[] 中的元素数量会比 list1 少很多
print(list1)
print(d)
页:
[1]