случайные и вхождения

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

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

тогда

  • для N ‹ b генерировать случайное число от 0 до a
  • подсчитать количество вхождений каждого числа, которое было сгенерировано

и в конце

  • ставит число = количество вхождений числа (для каждого числа)

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

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 "_________________________________________________"

person m_vdbeek    schedule 16.11.2011    source источник
comment
Нет ^^ Абсолютно нет. Я просто хочу проверить случайность реализации генератора случайных чисел в рубине!   -  person m_vdbeek    schedule 17.11.2011


Ответы (1)


person    schedule
comment
Оуау, спасибо, это действительно помогло! Не могли бы вы объяснить мне (1..upper)? - person m_vdbeek; 17.11.2011
comment
Это составляет диапазон от 1 до текущего значения upper - если вы хотите увидеть это сами, введите (1..upper).to_a в irb (to_a означает массив) :-) Глядя на ваш код выше, он похож на то, что вы делали с [*0..$Sur] ( эквивалентом будет [*1..upper]). - person Tapio Saarinen; 17.11.2011
comment
О, хорошо, спасибо! =) Большую часть времени я продолжаю делать очень длинные вложенные if или elsif, и их становится все сложнее читать и исправлять. В большинстве случаев это потому, что я действительно не знаю, как использовать итерации или подсчет. - person m_vdbeek; 17.11.2011