[英]Why doesn't my code generate random numbers without str?
有人可以向我解釋為什么當我從 7 行代碼“myset.add(str(i))”中刪除“str”時,每次我點擊運行時都會得到相同的數字並得到包含“str”的隨機數嗎?
def RandomFunction(x, y):
myset = set()
mylist = []
listofnumbers = []
for i in range(x, y):
myset.add(str(i))
for x in myset:
mylist.append(int(x))
if len(mylist) <= 5:
print('In order to generate 5 numbers, the range of input needs to be higher')
else:
for y in mylist:
listofnumbers.append(y)
if len(listofnumbers) >= 5:
print(listofnumbers)
break
RandomFunction(10, 20)
Set 保留 hash 表中的元素,它使用默認 python 的hash()
function。 它對數字類型的實現如下所示:
def hash(number):
return number % (2 ** 61 - 1)
因此,如果數字不是很大,則 integer 的 hash 值將等於相同的 integer。 因為這個python集合中的整數將保持升序( for
也以升序讀取hash表)。
但是 string 是 unicode 字符的序列,末尾帶有\0
,並且 python 對字符串有另一種hash()
實現,因此它對它們的工作方式不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.