【Ruby】レッスン1-05:乱数を生成しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:乱数生成

この記事の練習問題を解くために必要な知識:
1.基礎文法、2.制御構造3.メソッド4.コレクション5.オブジェクト指向

<<前のページ Ruby記事一覧 次のページ>>

Rubyの「乱数生成」とは

この章ではRubyにおける「乱数生成」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。

プログラミングではゲームやデータ分析など、さまざまな場面で乱数(ランダムな数値)が利用されます。

Rubyには乱数を簡単に生成する方法があり、ここではその基本的な方法を紹介します。

この記事を通して簡単に乱数を生成し、シミュレーションなどに応用できるようになります。

乱数生成とは?

乱数とは特定の範囲内で無作為に選ばれた数値のことです。

例えば1から6の範囲でランダムに数値を取得すると、サイコロの出目のような結果を得られます。

Rubyではrand()メソッドを使うことで数値を無作為に取得し、様々な場面で活用できます。

Rubyでの乱数生成方法

Rubyで乱数を生成するにはrand()メソッドを使います。

このメソッドは次のように使用することで、指定した範囲内の数値をランダムに取得します。

puts rand()       # 0以上1未満の小数を生成
puts rand(10)     # 0以上10未満の整数を生成
puts rand(1..6)   # 1から6までの範囲内の整数を生成

引数(カッコの中)に数字を入れなければrand()は0以上1未満の小数を生成します。

引数に整数を渡すと、0以上その数値未満の整数を生成し、特定の範囲を指定する場合はrand(範囲)という形式で使用できます。

使用例:サイコロの出目をシミュレーション

では具体的な例としてサイコロの出目をシミュレーションしてみましょう。

以下のコードを実行すると、1から6までのランダムな数値が表示され、サイコロを振った結果をシミュレーションすることができます。

# サイコロの出目をシミュレーションするプログラム
puts "サイコロを振ります..."
dice_roll = rand(1..6) # 1から6の範囲で乱数を生成
puts "出た目は#{dice_roll}です!"

このコードではrand(1..6)によって1から6までの乱数が生成され、サイコロの出目として表示されます。

このようにrand()を活用することでシンプルに乱数を生成できます。

まとめ

Rubyの乱数生成メソッドrand()を使うと、簡単にランダムな数値を得られます。

このメソッドは特にシミュレーションやゲームで役立ちますので、しっかり覚えておきましょう。

第3章でメソッドについてさらに詳しく学習する予定ですが、ここではこの基本的な使い方をまずは覚えておいてください。

Rubyの練習問題&解説:ランダムな数値と合計を表示するプログラムを作ろう

乱数生成をしっかりと身に着けるため、練習問題に挑戦しましょう。

「乱数生成」の練習問題

1から100までの数値を入力して、それにランダムに生成された1から100の数値を加算するプログラムを作成しましょう。

このプログラムではユーザーから入力された数値と、ランダムに生成された数値がそれぞれ表示され、その合計が最終的に表示されます。

以下の要件に従ってコードを完成させてください。

  • putsを使用して「1から100までの数字を入力してください:」というメッセージを表示すること。
  • gets.to_iでユーザーからの入力を整数として取得し、変数user_numberに格納すること。
  • putsを使用して、「あなたが入力した数字は user_number です。」と表示すること。
  • rand(1..100)で1から100の範囲で乱数を生成し、変数random_numberに格納すること。
  • putsを使用して、「ランダムに生成された数字は random_number です。」と表示すること。
  • 変数user_numberrandom_numberを加算し、その結果を変数sumに格納すること。
  • putsを使用して、「あなたが入力した数字とランダムな数字の合計は sum です。」と表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

1から100までの数字を入力してください:
> 25
あなたが入力した数字は 25 です。
ランダムに生成された数字は 73 です。
あなたが入力した数字とランダムな数字の合計は 98 です。

自力で解くのが難しい人へ

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:ユーザーに「1から100までの数字を入力してください:」と出力
2:変数user_numberにユーザーからの入力値を整数として代入
3:変数user_numberの値を「あなたが入力した数字は user_number です。」として出力
4:変数random_numberに1から100の範囲で乱数を生成して代入
5:変数random_numberの値を「ランダムに生成された数字は random_number です。」として出力
6:変数sumにuser_numberとrandom_numberの合計を代入
7:変数sumの値を「あなたが入力した数字とランダムな数字の合計は sum です。」として出力

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

# ユーザーに1から100までの数字の入力を促す
puts "1から100までの数字を入力してください:"

# ユーザーが入力した数字を整数として取得し、変数 user_number に格納
user_number = gets.to_i

# 入力された数字を表示
puts "あなたが入力した数字は #{user_number} です。"

=begin
【穴埋め問題1】
ここで、1から100までのランダムな数字を生成し、それを変数 random_number に代入するコードを書いてください。
=end

# 生成されたランダムな数字を表示
puts "ランダムに生成された数字は #{random_number} です。"

# 入力された数字とランダムな数字の合計を計算
sum = user_number + random_number

# 二つの数字の合計を表示
puts "あなたが入力した数字とランダムな数字の合計は #{sum} です。"

以上がこの問題の穴埋めコードです。

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。



この問題の解答例と解説

例えば以下のようなプログラムが考えられます。

# ユーザーに1から100までの数字の入力を促す
puts "1から100までの数字を入力してください:"

# ユーザーが入力した数字を整数として取得し、変数 user_number に格納
user_number = gets.to_i

# 入力された数字を表示
puts "あなたが入力した数字は #{user_number} です。"

# 1から100の間でランダムな数字を生成し、変数 random_number に格納
random_number = rand(1..100)  # rand(1..100) は1から100までの範囲で乱数を生成します

# 生成されたランダムな数字を表示
puts "ランダムに生成された数字は #{random_number} です。"

# 入力された数字とランダムな数字の合計を計算
sum = user_number + random_number

# 二つの数字の合計を表示
puts "あなたが入力した数字とランダムな数字の合計は #{sum} です。"

今回のプログラムは、ユーザーが入力した数とランダムに生成された数を合計して表示するシンプルなプログラムです。

このコードをブロックごとに分けて、各ブロックの内容と文法を初心者向けに解説します。

ユーザーからの入力を受け取る部分

puts "1から100までの数字を入力してください:"
user_number = gets.to_i
  • puts は、画面に文字列を表示するための命令です。この行では「1から100までの数字を入力してください:」と表示し、ユーザーに数値を入力してもらいます。
  • gets はユーザーの入力を受け取るための命令で、to_i はその入力を整数に変換します。これにより、ユーザーが入力した値が整数として変数 user_number に格納されます。

入力した数を表示する部分

puts "あなたが入力した数字は #{user_number} です。"

#{} は、文字列の中に変数の値を埋め込む「式展開」という機能です。

この行では、ユーザーが入力した数を表示します。

乱数を生成する部分

random_number = rand(1..100)
  • rand(1..100) は、1から100までの範囲内でランダムな数(乱数)を生成します。このプログラムの中で「乱数生成」の重要な部分です。
  • rand メソッドを使うと、指定した範囲からランダムな整数を簡単に生成できます。ここで生成された乱数は、変数 random_number に格納されます。

生成された乱数を表示する部分

puts "ランダムに生成された数字は #{random_number} です。"

ここでは生成された乱数をユーザーに見せるために表示しています。

先ほどの #{} を使用して、変数 random_number の値が出力されます。

合計を計算して表示する部分

  • sum = user_number + random_number で、ユーザーが入力した数と生成された乱数の合計を計算し、変数 sum に格納します。
  • 最後に、合計を表示します。再び #{} を使って、計算された合計が表示されます。

まとめ

このプログラムを通してRubyでの「乱数生成」と「ユーザー入力」の基本を学びました。

特に rand メソッドを使って数値をランダムに生成し、それを他の値と組み合わせる方法が理解できたと思います。

基本的な文法を組み合わせるだけでシンプルな計算を含むプログラムを作ることができます。

今後もぜひこの方法を他のプログラムに応用してみてください。

<<前のページ Ruby記事一覧 次のページ>>

問い合わせフォーム

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Rubyのテキスト&問題集トップへ戻る
    トップページへ戻る