Ruby中的随机数生成器问题

Ruby中的随机数生成器问题,ruby,arrays,random,Ruby,Arrays,Random,我在这里的目的只是用从1到1到1000之间的随机数的顺序填充一个数组。然而,在反复运行这段代码(大约50次)之后,我得到的最高数字是120,只有两次超过100。我的大多数数组都在0到60之间。我觉得这种行为很不正常。我做错什么了吗 my_array = [] i = 0 while i <= rand(1000) my_array << i i += 1 end puts my_array.count puts my_array my_数组=[] i=

我在这里的目的只是用从1到1到1000之间的随机数的顺序填充一个数组。然而,在反复运行这段代码(大约50次)之后,我得到的最高数字是120,只有两次超过100。我的大多数数组都在0到60之间。我觉得这种行为很不正常。我做错什么了吗

my_array = []
i = 0
while i <= rand(1000)
    my_array << i 
    i += 1  
end

puts my_array.count
puts my_array
my_数组=[]
i=0

当i时,你的函数被破坏了,因为你检查的是随机数。这样做:

(0..1000).collect{ rand(1000) }
这将返回一千个随机数的数组

或者,更接近您的代码:

my_array = []
i = 0
while i <= 1000
    my_array << rand(1000) 
    i += 1  
end
第一个结果是“易于携带”的范围,第二个结果是填充的数组

(编辑)注:

(1..10)
包括在内-
(1..10)。to_a==[1,2,3,4,5,6,7,8,9,10]


(1…10)
是部分排他性的-
(1…10)。to_a==[1,2,3,4,5,6,7,8,9]
-它不包括数组的结尾,但仍然包括数组的开头。

此外,我修改了我的代码,以反映我最初试图实现的目标。我的问题是,每次我循环我的代码时,我都会生成一个新的随机数。因此,随着“i”向1000递增,越来越有可能生成一个低于“i”的随机数。我的解决方案虽然没有我接受的上述解决方案那么优雅,但在尝试在循环中使用随机数之前,我将其存储在一个变量中。再次感谢。以下是经修订的守则:

my_array = []
i = 0
g = rand(1000)
while i <= g
    my_array << i 
    i += 1  
end

puts my_array.count
puts my_array
my_数组=[]
i=0
g=兰特(1000)

而我听起来你想要:

(1...rand(1000)).to_a

你是在播种你的随机化器吗?你是随机数,它是while循环中的守卫,你在附加你认为是计数器的东西。看了我的代码后。。。是否每次循环时都会运行一个新的随机数?如果是这样的话,这就解释了为什么它如此倾向于较小的数字。如果还没有人回答,我会检查并报告。我希望每次计算条件时都会计算
rand(1000)
。谢谢。我实际上是想按顺序从1到1到1000之间的某个随机数得到一个数组。@Kewigro随机数没有顺序。在Ruby中,你通常描述的是你想要什么,而不是得到它的方法。你想要的是一个从1到随机数的数组,这就是你写的。我只是在学ruby。你的例子有助于突出我所犯的错误,我曾怀疑这一错误,但不确定如何纠正。谢谢你可以用
my_array=(1..g)这样做,不用那么冗长。对a来说,这看起来很不错。从现在起,我会用它来代替。甚至不用
,也可以用它来代替
。对于大多数应用程序,包括可枚举的东西和数组一样好。好的,但OP特别要求使用数组。
(1...rand(1000)).to_a