【问题标题】:random and occurrences随机和发生
【发布时间】:2011-11-16 23:33:24
【问题描述】:

我正在尝试创建一个程序:

  • 要求用户输入最大值。范围(一)
  • 要求用户输入最大值。迭代次数 (b)
  • N = 1(N 是迭代次数)

然后

  • 为 N
  • 计算生成的每个数字的出现次数

最后

  • puts number = 出现次数 (每个数字)

我尝试了很多东西,但我真的觉得我把它弄得太复杂了,显然不起作用。

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

【问题讨论】:

  • 不 ^^ 绝对不是。我只是想测试一下ruby中随机生成器实现的“随机性”!

标签: ruby random iteration


【解决方案1】:
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

【讨论】:

  • 欧欧感谢这真的有帮助!你能解释一下(1..upper)吗?
  • 这使得范围从 1 到 upper 的当前值 - 如果您想自己查看这个,请在​​ irb 中输入 (1..upper).to_ato_a 表示“到数组”):-)在您上面的代码中,它类似于您对 [*0..$Sur] 所做的事情(等效为 [*1..upper])。
  • 哦,好的,谢谢! =) 大多数时候,我一直在做一些非常长的嵌套 if 或 elsif,而且阅读和更正变得越来越复杂。大多数时候是因为我真的不知道如何使用迭代或计数。
猜你喜欢
  • 1970-01-01
  • 2019-03-25
  • 1970-01-01
  • 2011-01-23
  • 1970-01-01
  • 2019-12-15
相关资源
最近更新 更多