乱数を生成する - C#
C#で乱数を生成するコードを紹介します。
概要
C#で乱数を生成する場合はRandomクラスを利用します。
0から1の間の乱数を生成する
0から1までの間の乱数を作成します。作成される乱数は小数を含む実数です。
書式
0から1までの乱数を生成する場合は、Randomオブジェクトの
NextDouble()
メソッドを呼び出します。
[Randomオブジェクト].NextDouble()
プログラム例
Windows Formアプリケーションを作成します。
UI
下図のフォームを作成します。MultilineプロパティをTrueに設定した複数行のテキストボックスとボタンを配置します。
コード
次のコードを記述します。button1のクリックイベントを実装しています。
ボタンのクリックイベントハンドラの作成手順は
こちらの記事を参照してください。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace RandomNumberGenerate
{
public partial class FormRandomZeroToOne : Form
{
private Random rnd;
//private System.Random rnd;
public FormRandomZeroToOne()
{
InitializeComponent();
}
private void FormRandomZeroToOne_Load(object sender, EventArgs e)
{
rnd = new Random();
}
private void button1_Click(object sender, EventArgs e)
{
double random_num = rnd.NextDouble();
textBox1.Text += string.Format("生成された乱数: {0:f}\r\n", random_num);
}
}
}
解説
乱数を生成するためには、乱数を生成する
Random
クラスのオブジェクトを作成する必要があります。
初めに
new Random()
を呼び出し、Randomクラスのオブジェクトを作成します。
Randomクラスのコンストラクタに何も指定しない場合は、システムクロックからシード値を生成するため、毎回実行時には違う乱数になります。
一方、コンストラクタにシード値を与えた場合は、実行開始時から毎回同じ乱数が生成される動作になります。
rnd = new Random();
乱数の生成は、Randomクラスのオブジェクトの
NextDouble()
メソッドで生成します。このメソッドの戻り値で 0から1の間のdouble型の乱数の数値が返ります。
double random_num = rnd.NextDouble();
生成された乱数をテキストボックスに表示します。
textBox1.Text += string.Format("生成された乱数: {0:f}\r\n", random_num);
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。株のテキストボックスにメッセージと生成された乱数が表示されます。
[button1]ボタンをクリックすると毎回違った数値が生成されます。
アプリケーションを再起動して、再度[button1]をクリックします。
Randomオブジェクトのシード値がシステムクロックで指定しているため、毎回違った乱数が表示されます。
指定した範囲の数値での整数の乱数を生成する
指定した範囲での数値の整数の乱数を生成するコードを紹介します。
書式
指定した範囲の整数の乱数を生成する場合は、Randomオブジェクトの
Next()
メソッドを呼び出します。
第一引数に生成される乱数の最小値、第二引数に生成される乱数の最大値を与えます。
[Randomオブジェクト].Next([生成される乱数の最小値],[生成される乱数の最大値])
なお、Nextメソッドの引数が1つの場合は、0以上かつ与えた引数より小さい乱数を生成します。
0<=[生成される乱数]<[引数の値]
[Randomオブジェクト].Next([生成される乱数の最大値])
プログラム例
50から100までの範囲の乱数を生成するプログラムを作成します。
UI
下図のフォームを作成します。MultilineプロパティをTrueに設定した複数行のテキストボックスとボタンを配置します。
コード
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace RandomNumberGenerate
{
public partial class FormRandomRangeInteger : Form
{
private Random rnd;
public FormRandomRangeInteger()
{
InitializeComponent();
}
private void FormRandomRangeInteger _Load(object sender, EventArgs e)
{
rnd = new Random();
}
private void button1_Click(object sender, EventArgs e)
{
int rand_number = rnd.Next(50,100);
textBox1.Text += string.Format("生成された乱数: {0:d}\r\n", rand_number);
}
}
}
解説
コードは先のプログラムと同様です。乱数の生成部分が次のコードとなり、50から100の間の整数の乱数を生成する処理に変わっています。
int rand_number = rnd.Next(50,100);
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。乱数が生成され、テキストボックスに数値が表示されます。
再度ボタンを押すと、別の乱数が生成されます。
ボタンを繰り返し押して乱数の値を確認します。50から100までの乱数が生成できていることがわかります。
指定した範囲での整数の乱数を生成できました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2021-12-31
改訂日: 2023-03-15