def NoRep(count)
vnow=0
ts=[]
count.times do |i|
ts[i]=Thread.new do
sleep(rand(0.01))
Thread.current["val"]=vnow
vnow+=1
end
end
ary=[]
ts.each{|t|t.join;ary<<t["val"]}
ary
end
p NoRep(100)
而另一种不用线程并发的方式为:
def NoRep(n)
a=(1..n).to_a
ac=[]
until a.empty?
idx=rand(a.size)
x=a[idx]
a.delete(x)
ac<<x
end
ac
end
文档上说r1.9有Array#choice方法,结果没找到,so...如上。
还有一种方法: (1..100).to_a.sort_by {rand}
最后有一种更简单的方式:Array#shuffle.
时间: 2024-11-18 05:27:35