coding-coworking-club / basic-python-fall-2021

11 stars 6 forks source link

[Week 7] 小華的抽籤程式 #346

Closed jean820212 closed 2 years ago

jean820212 commented 2 years ago

提交連結

https://judge.ccclub.io/status/d4fbe35735d48801b9d78b9995f38622

程式碼

import random
#ri=(a*ri-1+b)%c

draw = [int(i) for i in input().split(' ')]
a = random.randint(1,1000000000)
b = random.randint(1,1000000000)
c = random.randint(1,10000)
random.seed(draw[0])
r0 = draw[0]
people = draw[1]

for x in range(people):
    ans = (a * r0 + b) % c
    print(ans)
    r0 = ans

錯誤訊息

Wrong Answer

問題描述

不曉得哪裡有錯><

siddwang827 commented 2 years ago

你應該自己測試的時候就可以發現跟測資完全不一樣了? 首先要先了解我們為什麼要用random.seed()這個函式?(建議可以google random這個模組) 它的用途是透過固定種子,來讓後面random模組裡產生的generator具有固定序列以得到假隨機的值, 這樣透過給定的種子每個學員跑出來的a,b,c才會相同,而rn的值也受r0與a,b,c影響, 當這幾個變數都變成有固定序列,judge也才會有測資參考答案,否則每個人得到的值都不一樣就無法AC了, 這樣你應該就可以想到random.seed()應該要在你執行random.randint()之前,在產生亂數前先種下亂數種子才有意義喔。

jean820212 commented 2 years ago

謝謝助教