#14212: [Python] srand 與 rand 的實作


icube (!@#$%^&*()_+)

學校 : 國立臺灣師範大學附屬高級中學
編號 : 61090
來源 : [220.135.116.184]
最後登入時間 :
2024-04-01 14:01:32
c576. 不快速的快速排序 | From: [220.135.116.184] | 發表日期 : 2018-06-28 20:47

當初在出題時並未考慮到 C/C++ 以外的語言,作為補充說明及參考,於此附註 ZJ server 上 C/C++ rand 的實作方式。

import collections, time
class c576:
    r = collections.deque()
    
    @staticmethod
    def rand():
        r = c576.r
        r.append((r[0] + r[28]) % 4294967296)
        r.popleft()
        return r[-1] // 2

    @staticmethod
    def srand(seed):
        r = c576.r
        r.clear()
        r.append(seed)
        for i in range(1, 31):
            r.append(16807 * r[i - 1] % 2147483647)
        r.rotate(-3)
        for i in range(34, 344):
            r.append((r[0] + r[28]) % 4294967296)
            r.popleft()
            
    @staticmethod
    def Init():
        c576.srand(int(time.time()) // 60)

c576.Init()
 
ZeroJudge Forum