Wrap text
Report abuse
base = 10
places = 4
max = base ** (places * 2)
counts = [0] * (places + 1)
(1..1000000).each do
index = rand(max)
permutation = "%0#{places * 2}d" % index.to_s(base)
original = (0...places).map { |i| permutation[i].chr }
guess = (places...(places * 2)).map { |i| permutation[i].chr }
matches = 0
guess.each do |g|
(0...places).each do |i|
if g == original[i]
original[i] = nil
matches += 1
break
end
end
end
counts[matches] += 1
end
p counts # => [195649, 456019, 292866, 53717, 1749]
$ irb
>> (456019+2*292866+3*53717+4*1749)/(195649+456019+292866+53717+1749).to_f
=> 1.209898