
import randomfor 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(作为列表中的“FizzBuzz”索引[i 1,“Fizz”,“Buzz”,“FizzBuzz”]?(这是正确的行为,并且对应到列表中的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).
请注意,此代码不像传统的FizzBuzz程序那样执行,并且在很大程度上取决于随机实现.它在2.7.3中适用于我,但在3.3.2中不起作用(见Why is seeding the random number generator not stable between versions of Python?).
以上是内存溢出为你收集整理的使用随机的Python中的fizzbuzz,它是如何工作的?全部内容,希望文章能够帮你解决使用随机的Python中的fizzbuzz,它是如何工作的?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)