如何给变量赋一个随机数?

6

在我说其他内容之前,我想提到我几乎完全不懂编程,并且只有对Python有非常基本的了解。

现在问题来了,我正在尝试编写一个文本冒险游戏,类似于D&D。 我卡在了早期阶段-即如何将介于1和18之间的随机整数分配给变量。

我已经看过一些方法,但是每次调用它时变量的值都会改变。这是不行的。原因是我希望属性(力量,智慧,智力,敏捷,魅力和体质)是随机生成的但固定的数字,可以被调用并且每次都相同。

我尝试过修改Str = random.randomint(1,18),使用随机模块。

我最接近的方法是使用lambda函数,以便在调用变量时生成一个随机数,每次都不同。但是这些都没有真正起作用,我真的很想知道我做错了什么。


如果您正在模拟3个6面骰子的投掷,那么随机数不应该在3和18之间吗? - Marcelo Assis
6
不,应该是将1到6之间的3个随机数相加(尽管原文并没有提到实际使用3d6)。 - Wooble
@Wooble 如果使用3个随机数,结果会不同吗? - Marcelo Assis
“Call upon” 一个数字究竟是什么意思? - Thorsten Kranz
当你开始编码时,不要过早地开始使用Lambda。除非你对函数式编程感兴趣。 - Ber
@MarceloAssis 如果您使用具有相等分布的标准随机生成器,则结果将会有所不同。例如,相对于10而言,结果为3实际上不太可能发生。 - Howard
2个回答

8

我发现你的代码很接近正确:

Str = random.randomint(1,18) 应该改成 Str = random.randint(1,18)

这一行将随机整数赋值给变量 Str,每次请求 Str 时应该得到相同的数字。

如果你不断调用 Str = random.randint(1,18),它将每次更改 Str。所以只需要执行一次。

如果你了解关于 classes 的知识,你可以使用它们来容纳角色/物品/法术/冒险/怪物等,它们可以具有属性和特性以及库存等等,就像在游戏本身中,你将所有东西分组到不同的类型下。

注意:你提到你使用了lambda,这可能意味着你已将 Str 赋值给一个函数,该函数每次返回一个随机变量,这意味着每次请求 Str 实际上是要求该函数返回一个随机数。


1
这是random.randintrandom.randomint不存在 :) - mgilson
+1 表示理解用户真正想要的东西 :) - Hvordan har du det
@mgilson 谢谢,我在没有仔细查看的情况下复制了OPS代码。 - Inbar Rose
@RoxDorentus 哈哈,是啊,我花了一些时间才意识到他可能错在哪里。 - Inbar Rose
非常感谢。不过我有一个问题——我现在的代码和您的更正有什么区别呢? "Str = random.randomint(1,18) 应该改为 Str = random.randint(1,18)" 也许只是我自己的问题,但两个代码看起来对我来说都一样。除此之外,您的帮助真的很有用。 - user1987349
@user1987349 嗯,它们可能“看起来”相同,但相似并不意味着完全相同。例如,在这种情况下,random模块下有一个名为randint的函数,但是在random模块下没有名为randomint的函数。 - Inbar Rose

1

欢迎来到编程世界。

我已经做了一段时间的网站开发,最近也开始尝试更好的东西,比如(在我看来)不仅仅是php。我也会使用:

Str = random.randomint(1,18)

你在用集成开发环境吗?我发现当你初学一门新语言时,它们非常棒,因为有代码补全功能。这真的可以帮助你更快地熟悉语言,因为不必去各种网站查找语法。祝好运!基于文本的冒险游戏是一个很好的开始学习的方式!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接