为战斗模拟器生成随机数

时间:2015-03-27 19:43:46

标签: python function class random

我正在尝试创建一个非常基本的战斗模拟器。这是我的代码:

import random
#from random import * I had, at one time, created a D20 generator that used the * function. I have since removed it in favor of using randint()
sword = 0
D20 = 0

class Hero:

    def swing_and_hit(sword, D20):

        sword = D20
        print(D20)
        if sword >= 10:
            print("You have defeated the Villian!")

        elif sword  < 10:
            print("You have died!")

D20 = randint(1,20)
Adventurer = Hero
#Adventurer.D20_Func()  Ignore this...aborted effort to try something
Adventurer.swing_and_hit(sword, D20)

每次我在http://pythontutor.com/visualize.html#mode=edit运行时,随机数生成器输出13.我无法弄清楚为什么会这样做...有什么想法吗?我已经尝试在函数swing_and_hit中嵌套随机数生成,并且每次运行程序时它仍会生成相同的数字。

2 个答案:

答案 0 :(得分:2)

我认为每次产生相同数字的随机数发生器是pythontutor.com的怪癖。我每次只用这段代码得到17:

import random
print(random.randint(1, 20))

如果您必须使用网站来运行代码,请尝试repl.it

答案 1 :(得分:2)

这似乎是一个&#34;功能&#34;在Pythontutor中,确保不同的人会看到运行相同代码的相同结果。 (我总是17岁)

他们是否将其定义为一个特征,它可能会被破坏 - 随机数应该是随机的。

只需在您自己的计算机上安装Python,然后开始使用 - 如果您使用的是Windows,则http://python.org的下载量小于20MB(如果您不使用,则已经安装了Python)。有交互式解释器,甚至是与语言一起安装的简单开发环境 - 没有动机让您通过Web实现来伤害自己,这可能有利于某些代码的小组学习,或者反思每个变量步骤中的内容一步一步。 Python交互式环境比&#34;点击运行更具动态性。你进入这个网站。