PR
Profile
Search this site.
MOBILE
qrcode
Others
<< Ruby:勉強はじめました | main | BASS:TATULA100 2019年モデル >>
Ruby:Loto7:ランダム選択機能を作る

要件のまとめ。

 

・ロト7は1〜37までの数値の中から、7個数字を選ぶ

=> 1〜37までの数値の間で、重複せず7個数値をランダムに出力する

 

必要な処理の整理

・1〜37までのデータを用意

・1〜37の数値から、7個ランダムに数値を取る

・結果を出力

 

★追記 20:59

考えてみれば、インスタンス変数を用意する必要はないのでは? と思い立ち、インスタンス変数の部分を削除。

そして結果も変わらず、ランダムに7つ数値が出力された。

 

##### Loto7 ランダム選択

class Loto7RandomSelection

  # 1〜37までの数値を配列で用意
  def loto7_number
    (1..37).to_a
  end
  
  # 1〜37の値をシャッフルし、7つ出力
  def num_shuffle
    print "#{loto7_number.sample(7).sort}¥n"
  end
  
end

loto7 = Loto7RandomSelection.new
loto7.num_shuffle

 

結果 =>  [8, 15, 18, 19, 33, 34, 36]

 

<-------------------------------------------------------->

 

##### Loto7 ランダム選択

class Loto7RandomSelection
  
  def initialize(number)
    @number = number
  end
  
  # 1〜37までの数値を配列で用意
  def loto7_number
    @number = (1..37).to_a
  end
  
  # 1〜37の値をシャッフルし、7つ出力
  def num_shuffle
    print "#{loto7_number.sample(7).sort}¥n"
  end
  
end

loto7 = Loto7RandomSelection.new(1)
loto7.num_shuffle

 

結果 =>  [14, 16, 20, 26, 28, 29, 33]

 

<-------------------------------------------------------->

 

※ 上記は手直ししたコード。

最初に作ったコードは下記。

 

roto7 = []
num = 0

 

#配列に1〜37の数値を代入
for roto7[num] in 1..37 do
  roto7[num] += 0
  num += 1
end

 

#1〜37の数値をシャッフルして7個抽出してソートして出力
File.open("roto7_ランダム出力.txt", "a") do |roto_f|
  roto_f.print roto7.sample(7).sort
  roto_f.print "¥n"
end

 

最初は、classの概念など理解していなかった為に上記の形に。

また、Rubyでは for は使わないのが普通とのこと。

 

JUGEMテーマ:コンピュータ

| Ruby | 17:53 | - | - | このページのトップへ
スポンサーサイト
| - | 17:53 | - | - | このページのトップへ