Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
Math.PI / Math.E / Random
数学定数や乱数生成に関するクラスです。『Math』クラスは数学定数・数学関数を提供し、『Random』クラスは乱数を生成します。
構文
// 数学定数の参照 double pi = Math.PI; double e = Math.E; // Random クラスのインスタンス生成と乱数取得 Random rng = new Random(); int n = rng.Next(最小値, 最大値); // 最小値以上・最大値未満の整数 double d = rng.NextDouble(); // 0.0 以上 1.0 未満の浮動小数点数
メソッド一覧
| メンバー | 概要 |
|---|---|
| Math.PI | 円周率 π(3.141592653589793)を表す定数です。 |
| Math.E | 自然対数の底 e(2.718281828459045)を表す定数です。 |
| Math.Abs(x) | 数値の絶対値を返します。 |
| Math.Sqrt(x) | 平方根を返します。 |
| Math.Pow(x, y) | x の y 乗を返します。 |
| Math.Round(x, n) | 小数点以下 n 桁で四捨五入(銀行丸め)した値を返します。 |
| Math.Floor(x) | 切り捨て(床関数)した値を返します。 |
| Math.Ceiling(x) | 切り上げ(天井関数)した値を返します。 |
| Math.Max(a, b) | 2 つの値のうち大きい方を返します。 |
| Math.Min(a, b) | 2 つの値のうち小さい方を返します。 |
| Random.Next(min, max) | min 以上 max 未満のランダムな整数を返します。 |
| Random.NextDouble() | 0.0 以上 1.0 未満のランダムな浮動小数点数を返します。 |
| Random.NextBytes(buf) | バイト配列にランダムな値を書き込みます。 |
| Random.Shared | .NET 6 以降で使えるスレッドセーフな共有インスタンスです。 |
サンプルコード
using System;
// 数学定数の参照
Console.WriteLine($"π = {Math.PI}"); // 3.141592653589793
Console.WriteLine($"e = {Math.E}"); // 2.718281828459045
// 円の面積(π × r²)を計算します。
double radius = 5.0;
double area = Math.PI * Math.Pow(radius, 2);
Console.WriteLine($"半径 {radius} の円の面積: {area:F4}"); // 78.5398
// 数学関数の基本的な使い方
Console.WriteLine(Math.Sqrt(16)); // 4 — 平方根
Console.WriteLine(Math.Abs(-42)); // 42 — 絶対値
Console.WriteLine(Math.Max(10, 20)); // 20 — 最大値
Console.WriteLine(Math.Round(3.456, 2)); // 3.46 — 四捨五入
// Random で乱数を生成します(シードなしはランダム)。
Random rng = new Random();
Console.WriteLine(rng.Next(1, 7)); // 1〜6 のサイコロ値
Console.WriteLine(rng.NextDouble()); // 0.0 以上 1.0 未満
// 固定シードを渡すと毎回同じ乱数列が得られます(テスト用)。
Random seeded = new Random(42);
Console.WriteLine(seeded.Next(1, 101)); // 常に同じ値
// .NET 6 以降では Random.Shared を使うとスレッドセーフです。
int dice = Random.Shared.Next(1, 7);
Console.WriteLine($"サイコロ: {dice}");
概要
『Math』クラスは静的クラスのためインスタンス化できません。定数は『Math.PI』『Math.E』のようにそのまま参照します。
『Random』クラスはコンストラクタにシード(整数)を渡すと再現可能な乱数列を生成できるため、テストコードや教材でよく使われます。マルチスレッド環境で複数スレッドから同一の『Random』インスタンスを共有すると競合が起きることがあります。.NET 6 以降では『Random.Shared』を使うとスレッドセーフな共有インスタンスを利用できます。
乱数の種類については『Task.Run() / Task.Delay()』などの非同期処理とも組み合わせて使われます。数値演算の詳細は『Enumerable.Aggregate()』も参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。