如何在python中创建一个不使用';不要创建重复的数字
我有一个简单的python代码来创建随机数如何在python中创建一个不使用';不要创建重复的数字,python,random,Python,Random,我有一个简单的python代码来创建随机数 import random for x in range(100): print (random.randint(1,100)) 尽管这段代码创建了随机数,但它仍然可以创建重复数,有人能帮我想出一个办法,使它不能打印重复数吗?您可以将刚刚生成的随机数存储到一个列表中,然后在每次生成另一个数时遍历该列表。如果新生成的编号存在于列表中,则将其废弃并转到下一代 这是我最好的猜测,但我不会给你写任何代码,最好你弄明白并学习。如果您确实需要一个代码示例
import random
for x in range(100):
print (random.randint(1,100))
尽管这段代码创建了随机数,但它仍然可以创建重复数,有人能帮我想出一个办法,使它不能打印重复数吗?您可以将刚刚生成的随机数存储到一个列表中,然后在每次生成另一个数时遍历该列表。如果新生成的编号存在于列表中,则将其废弃并转到下一代
这是我最好的猜测,但我不会给你写任何代码,最好你弄明白并学习。如果您确实需要一个代码示例,请告诉我,我可以为您制作一个。首先生成数字,然后洗牌,然后从列表中选择
import random
numbers = list(range(100)) # `numbers` is now a list [0, 1, ..., 99]
random.shuffle(numbers) # the list is now in random order
while numbers: # While there are numbers left,
a = numbers.pop() # take one from the list,
print(a) # and print it.
一个
集合
将是一个更好的数据结构来保存已经看到的数字。在一个列表上迭代是O(n)复杂度,而Python中的set
要少得多。我相信我从来没有在Python中使用过set。我只用java编写代码,所以我确信您的代码绝对正确。感谢您的更正。即使在Java中,类似集合的结构(我想是一个HashSet
,我已经有一段时间没有使用Java了)也比列表好,我相信。:)我会试试这个听起来很棒,如果有,请让我知道它对你的效果如何!:)当我尝试运行此命令时,我收到一条错误消息:Traceback(最近一次调用last):文件“C:/Users/Desireee/Desktop/Python/random.py”,第4行,在random.shuffle(list)#列表现在以随机顺序排列文件“C:\Users\Desireee\AppData\Local\Programs\Python\Python37-32\lib\random.py”,第275行,在shuffle for i in reversed(范围(1,len(x))中)):TypeError:type类型的对象没有len()是的,我的错。在写的时候输入错误@MatteoItalia修好了,请再试一次。耶,谢谢!:)
import random
mySet = set()
totalTries = 20
for i in range(totalTries):
mySet.add(random.randint(0, 20))
###................................
_ = [print(str(x) + ", ", end="") for x in mySet]
print("\n")
print(str(totalTries - len(mySet)) + " duplicates were dropped!")