【问题标题】:Having trouble randomly generating numbers in multidimensional arrays在多维数组中随机生成数字时遇到问题
【发布时间】:2018-05-02 14:42:50
【问题描述】:

我正在尝试在多维数组中生成坐标。

坐标中每个数字的范围是 -1 到 1。 似乎是比较两个随机数的方法。我遇到了麻烦,因为随机化它需要永远,坐标重复,有时不会一直填充。我试过uniq!这只会导致初始化在尝试提出不同的迭代时永远运行。

坐标看起来像这样。 (-1, 0, 1, 0, 0)

5 位数字给出位置。我可以把它们写出来,但我想在每次启动程序时生成坐标。然后将坐标分配给与键相关的哈希。 1 - 242。

我真的可以使用一些建议。

编辑添加代码。它确实开始迭代,但没有正确填写。只需写出一个包含所有可能组合的数组并在将其与密钥合并之前进行随机化。我不知道怎么做。

room_range = (1..241)
room_num = [*room_range]
p room_num
$rand_loc_cords = []

def Randy(x)

    srand(x)
    y = (rand(100) + 1) * 1500
    z = (rand(200) + 1) * 1000
    return z <=> y

end

def rand_loc


   until $rand_loc_cords.length == 243 do
     x = Time.new.to_i
    $rand_loc_cords.push([Randy(x), Randy(x), Randy(x), Randy(x), Randy(x)])
    $rand_loc_cords.uniq!
    p $rand_loc_cords
end

   #p $rand_loc_cords

end

rand_loc

【问题讨论】:

  • 请告诉我们您尝试了什么。
  • 用代码编辑
  • 由于你不断地用相同的值重新播种随机数生成器,你显然会不断地得到相同的随机数。
  • 是的,我希望因为时间会改变它会有所帮助,但我错了。

标签: arrays ruby multidimensional-array


【解决方案1】:

您正试图通过纯粹的运气获得长度为 5 的 -1、0 和 1 的所有可能排列,这可能需要很长时间。确实有 243 个(3**5):

coords = [-1,0,1].repeated_permutation(5).to_a 

Shuffle 数组,如果顺序应该是随机的。

【讨论】:

    猜你喜欢
    • 2019-06-04
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多