случайность и происшествия - PullRequest
1 голос
/ 17 ноября 2011

Я пытаюсь создать программу, которая:

  • просит пользователя ввести макс. диапазон (а)
  • просит пользователя ввести макс. количество итераций (б)
  • N = 1 (N - количество итераций)

1011 * тогда *

  • для N подсчитать количество вхождений каждого сгенерированного числа

и в конце

  • ставит число = количество вхождений числа (за каждый номер)

Я много чего пробовал, но я действительно чувствую, что делаю это слишком сложно и, очевидно, не работает.

puts "range :"
$Sur = gets.to_f

$N = 1
$Iterations = 1

while ($N <= 50) do

  def rand
    num1 = 0
    num2 = 0
    num3 = 0
    num4 = 0
    num5 = 0
    num6 = 0
    num7 = 0
    num8 = 0
    num9 = 0
    num10 = 0

    r = [*0..$Sur].sample
    if (r == 1)
        num1 += 1
      elsif (r == 2)
        num2 += 1
      elsif (r == 3)
        num3 += 1
      elsif (r == 4)
        num4 += 1
      elsif (r == 5)
        num5 += 1
      elsif (r == 6)
        num6 += 1
      elsif (r == 7)
        num7 += 1
      elsif (r == 8)
        num8 += 1
      elsif (r == 9)
        num9 += 1
      elsif (r == 10)
        num10 += 1
    end

    occurence = array.[](num1, num2, num3, num4, num5, num6, num7, num8, num9, num10)
    puts "#{occurrence}"

  end

puts "r = #{rand}"+"  i = #{$Iterations}"
puts "Nombre de fois 1=#{num1}"
puts "Nombre de fois 2=#{num2}"
puts "Nombre de fois 3=#{num3}"
puts "Nombre de fois 4=#{num4}"
puts "Nombre de fois 5=#{num5}"
puts "Nombre de fois 6=#{num6}"
puts "Nombre de fois 7=#{num7}"
puts "Nombre de fois 8=#{num8}"
puts "Nombre de fois 9=#{num9}"
puts "Nombre de fois 10=#{num10}"

  $N += 1
  $Iterations = $N-1

end

  puts "_________________________________________________"
  puts "Fin de l\'algorithme."
  puts "\n"
  puts "N est superieur au maximum que vous avez entrer"
  puts "Nombre d\'iterations de N = #{$Iterations}"
  puts "_________________________________________________"

1 Ответ

2 голосов
/ 17 ноября 2011
upper  = 10
count  = 50
result = Hash.new(0)

count.times do
  result[rand(upper)+1]+=1
end

(1..upper).each do |num|
  puts "Nombre de fois #{num} = #{result[num]}"
end
...