【发布时间】:2011-04-18 15:21:34
【问题描述】:
我有一个数组@number = [1,2,3,4,5,6,7,8,9]
现在,我想随机化数组内容...例如:[5,3,2,6,7,1,8]
请指导我如何进行。
【问题讨论】:
-
您的假设函数从数组中删除了 2 个元素。即使
shuffle也做不到,gg!
我有一个数组@number = [1,2,3,4,5,6,7,8,9]
现在,我想随机化数组内容...例如:[5,3,2,6,7,1,8]
请指导我如何进行。
【问题讨论】:
shuffle 也做不到,gg!
使用shuffle 方法...
irb(main):001:0> [1,2,3,4,5].shuffle
=> [3, 4, 2, 5, 1]
【讨论】:
shuffle 命令返回一个随机版本的数组
例如:
[1,2,3].shuffle => [2,3,1]
【讨论】:
@number.shuffle!
[1,2,3,4,5,6,7,8,9].sort_by {rand}[0,9]
=> [5, 7, 3, 8, 9, 4, 2, 1, 6]
【讨论】:
如果您使用的是旧版本的 ruby... 这将起作用
def randomize(array)
b = []
array.length.downto(1) { |n|
b.push array.delete_at(rand(n))
}
b
结束
a = [1,2,3,4,5] b=随机化(a) 打印 b
【讨论】:
loop n times
i = random array index
j = random array index
swap elements i and j
end
【讨论】:
n 给出了两组不同的排列。好难过,但还是有老师用这种方法教学生……千万不要那样做!
array和n,我应该告诉你,你不能得到什么一半的排列集,你能得到什么。使用[1,2,3,4,5] 和n%2 == 1,你永远不会得到[5,4,3,2,1]。 2. 此外,在统计上,在理想的随机混排数组中,1 元素位于其原始(它将在有序数组中的位置)位置。您使用1mln 元素对数组进行改组至少需要7mln 交换才能在其原始 位置上使用2 元素制作数组。