簡體   English   中英

為什么我的代碼不生成沒有 str 的隨機數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM