我@小甲鱼 发表于 2022-10-7 20:40:02

python中随机函数

想用python写一个随机点名的代码,我自己尝试用random.randint()来表达,但我发现使用random()来表达会一个问题,就是有时会重复,比如:
import random

num = random.randint(0,50)

print(num)

当我去运行的时候,有时会打印1,有时也会打印2,但有时又会打印1,就会出现重新的数字,我想打印十次,但每次打印出来的数字都是不同的,该怎么实现呢?
如果有哪位大佬知道,麻烦能否耽误大家几分钟的时候教我一下,鄙人万分感谢!

小伤口 发表于 2022-10-7 21:01:20

可以用random.sample{:5_102:}
这样取出的数据不会重复
说明:
random.sample([要取数据的列表], 要取出的数据个数)
返回值是一个列表{:5_109:}

jackz007 发表于 2022-10-7 21:22:55

本帖最后由 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>

fcage 发表于 2022-10-7 22:15:01

我有个另外的想法:
import random

li = # 1-50的列表
random.shuffle(li)

print(li.pop())# pop()会弹出并返回列表最末尾的值
每次直接从后面弹就是了,或者每次再shuffle一下

我@小甲鱼 发表于 2022-10-8 13:59:54

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:17:54

本帖最后由 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]
查看完整版本: python中随机函数