无法在多维数组中随机生成数字

时间:2017-11-19 05:43:15

标签: arrays ruby multidimensional-array

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

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

& coords看起来像这样。 (-1,0,1,0,0)

5位给出位置。我可以把它们写出来但是我想在每次启动程序时生成coords。然后将coords分配给与键绑定的散列。 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

1 个答案:

答案 0 :(得分:0)

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

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

Shuffle数组如果顺序应该随机化。