使用随机的Python中的fizzbuzz,它是如何工作的?
我很难弄清楚下面的代码是如何工作的:
import random for i in range(0,100): if not i % 15: random.seed(1178741599) print [i+1,"Fizz","Buzz","FizzBuzz"][random.randint(0,3)] 我明白,当我可以被15整除时,随机将使用相同的种子,因此randint(0,3)将始终返回相同的索引,但是当我尝试 for i in range(100): random.seed(1178741599) print random.randint(0,3) #always print 0 上面的代码总是打印0,不应该是3(作为列表中的“FizzBu??zz”索引[i 1,“Fizz”,“Buzz”,“FizzBu??zz”]?(这是正确的行为,并且对应到列表中的i 1.) 那么当我被3或5整除时呢? 种子1178741599的魔力是什么? 编辑:正如jonrsharpe所指出的,fizzbuzz代码仅适用于python 2.x. 解决方法random.seed(n) 意味着“将随机数发生器重置为某个已知位置n”.这意味着可以提前知道发电机的未来输出.对于一遍又一遍地使用相同的“随机”数据进行测试非常有用. 这段代码的作用是每15步重置一次生成器,因此每次都得到相同的15“随机”整数序列(因此,列表中的字符串).在Python 2.x中,重置后的第一个“随机”整数始终为0(当我刚刚在Python 3中尝试,在random.seed之后(1178741599),我得到random.randint(0,3)== 1). 请注意,此代码不像传统的FizzBu??zz程序那样执行,并且在很大程度上取决于随机实现.它在2.7.3中适用于我,但在3.3.2中不起作用(见Why is seeding the (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |