【问题标题】:How to use/insert a generated random number?如何使用/插入生成的随机数?
【发布时间】:2018-09-27 22:54:01
【问题描述】:

我生成了一个 1 到 100 范围内的数字。这个数字应该在 pos = vec(0,0,0) 的第一个坐标中(所以在 x 轴上)。其他轴应该保持为 0。如何将生成的数字转移到这一点?

from vpython import*
from random import randint



#Sonne
sun = sphere(pos = vec(0,0,0), radius = 9, make_trail = True ) 
sun.mass = 2e30   
sun.velocity = vec(0,0,0)

#Merkur
mercury_pos_x = randint(1, 100)
mercury = sphere(pos = vec(mercury_pos_x,0,0), radius = 5, color=color.red, make_trail = True ) 
mercury.mass = 3.25e23
mercury.velocity = vec(0,0,-47000)

#Venus
venus_pos_x = randint(1, 100)
venus = sphere(pos = vec(venus_pos_x,0,0), radius = 6, color=color.cyan, make_trail = True ) 
venus.mass = 4.9e24
venus.velocity = vec(0,0,-35000)

【问题讨论】:

  • 您想要 一个 用于每个主体的随机值,还是为每个主体使用一个单独的值?太阳是否停留在 (0,0,0)?
  • @Prune 一个单独的。太阳是的。但我实际上会有 9 颗行星和太阳。这只是摘录。所以 x 轴上的每个行星都有一个值
  • 请不要破坏您的帖子。通过在 Stack Exchange 网络上发布,您已授予 SE 分发该内容的不可撤销的权利(在 CC BY-SA 3.0 license 下)。根据 SE 政策,任何破坏行为都将被撤销。

标签: python random vpython


【解决方案1】:

我怀疑您希望每个行星都有一个不同的随机起点,将太阳留在 (0,0,0)。对于两个随机数,需要调用random两次,每次保留值以备后用。

merc_pos = randint(1, 100)
mercury = sphere(pos = vec(merc_pos,0,0), radius = s_rad1/2,
                 color=color.red, make_trail = True ) 

venus_pos = randint(1, 100)
venus = sphere(pos = vec(venus_pos,0,0), radius = s_rad1/1.8,
               color=color.cyan, make_trail = True ) 

如果您不打算在其他地方使用随机值,可以将其插入到位:

mercury = sphere(pos = vec(randint(1, 100),0,0), radius = s_rad1/2,
                 color=color.red, make_trail = True ) 

【讨论】:

  • 谢谢你,我一直在寻找这样的东西。我现在唯一的问题是,在 0.5 秒后模拟崩溃并且窗口刚刚退出(调试时)当我在没有调试的情况下开始时,它显示“ImportError:无法导入名称'randint'”。我应该导入另一个包吗?我用您的解决方案更新了问题中的代码。
  • 那些是不相关的问题。您应该像往常一样继续导入randint。如果您无法通过对原始代码的增量更改和在线搜索找到问题,那么您应该发布一个单独的问题。该问题将包括重现问题的代码。由于这两个条件都没有出现在这里,我真的不能再帮你了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
  • 2018-03-01
  • 1970-01-01
  • 2022-12-03
  • 2011-02-19
相关资源
最近更新 更多