Random クラス
擬似乱数ジェネレータを表します。擬似乱数ジェネレータは、乱数についての統計的な要件を満たす数値系列を生成するデバイスです。
この型のすべてのメンバの一覧については、Random メンバ を参照してください。
System.Object
System.Random
<Serializable>
Public Class Random
[C#]
[Serializable]
public class Random
[C++]
[Serializable]
public __gc class Random
[JScript]
public
Serializable
class Random
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
擬似乱数は、有限個の数値の中から等しい確率で選び出されます。この数字を選出するために使用する演算アルゴリズムには限界があるため、選び出された数字は完全な乱数ではありませんが、実質的には乱数として十分使用できます。
乱数の生成には、初期値としてシード値を使用します。同じシードを繰り返し使用すると、生成される乱数系列も同じになります。異なる乱数系列を生成する 1 つの方法は、シード値を時間によって決定することです。これにより、 Random の新しいインスタンスごとに異なる乱数系列を生成できます。
パフォーマンスを向上するには、1 つの乱数を生成するために繰り返し新しい Random を作成するのではなく、1 つの Random を作成して何回も使用し、多くの乱数を生成するようにします。
ランダム パスワードの作成に適した、暗号として安全な乱数を生成するには、たとえば、 System.Security.Cryptography.RNGCryptoServiceProvider などの System.Security.Cryptography.RandomNumberGenerator から派生したクラスを使用します。
使用例
[Visual Basic, C#, C++] 次に示すのは、クラス コンストラクタのさまざまなオーバーロードを使用して Random オブジェクトを作成し、それらのオブジェクトから Int32 および Double のランダムなシーケンスを生成するコード例です。
' Example of the Random class constructors and Random.NextDouble( )
' method.
Imports System
Imports System.Threading
Imports Microsoft.VisualBasic
Module RandomObjectDemo
' Generate random numbers from the specified Random object.
Sub RunIntNDoubleRandoms( randObj As Random )
' Generate the first six random integers.
Dim j As Integer
For j = 0 To 5
Console.Write( " {0,10} ", randObj.Next( ) )
Next j
Console.WriteLine( )
' Generate the first six random doubles.
For j = 0 To 5
Console.Write( " {0:F8} ", randObj.NextDouble( ) )
Next j
Console.WriteLine( )
End Sub
' Create a Random object with the specified seed.
Sub FixedSeedRandoms( seed As Integer )
Console.WriteLine( vbCrLf & _
"Random numbers from a Random object with " & _
"seed = {0}:", seed )
Dim fixRand As New Random( seed )
RunIntNDoubleRandoms( fixRand )
End Sub
' Create a random object with a timer-generated seed.
Sub AutoSeedRandoms( )
' Wait to allow the timer to advance.
Thread.Sleep( 1 )
Console.WriteLine( vbCrLf & _
"Random numbers from a Random object " & _
"with an auto-generated seed:" )
Dim autoRand As New Random( )
RunIntNDoubleRandoms( autoRand )
End Sub
Sub Main( )
Console.WriteLine( _
"This example of the Random class constructors " & _
"and Random.NextDouble( ) " & vbCrLf & _
"generates the following output." & vbCrLf )
Console.WriteLine( "Create Random " & _
"objects, and then generate and display six " & _
"integers and " & vbCrLf & "six doubles from each." )
FixedSeedRandoms( 123 )
FixedSeedRandoms( 123 )
FixedSeedRandoms( 456 )
FixedSeedRandoms( 456 )
AutoSeedRandoms( )
AutoSeedRandoms( )
AutoSeedRandoms( )
End Sub
End Module
' This example of the Random class constructors and Random.NextDouble( )
' generates the following output.
'
' Create Random objects, and then generate and display six integers and
' six doubles from each.
'
' Random numbers from a Random object with seed = 123:
' 2114319875 1949518561 1596751841 1742987178 1586516133 103755708
' 0.01700087 0.14935942 0.19470390 0.63008947 0.90976122 0.49519146
'
' Random numbers from a Random object with seed = 123:
' 2114319875 1949518561 1596751841 1742987178 1586516133 103755708
' 0.01700087 0.14935942 0.19470390 0.63008947 0.90976122 0.49519146
'
' Random numbers from a Random object with seed = 456:
' 2044805024 1323311594 1087799997 1907260840 179380355 120870348
' 0.21988117 0.21026556 0.39236514 0.42420498 0.24102703 0.47310170
'
' Random numbers from a Random object with seed = 456:
' 2044805024 1323311594 1087799997 1907260840 179380355 120870348
' 0.21988117 0.21026556 0.39236514 0.42420498 0.24102703 0.47310170
'
' Random numbers from a Random object with an auto-generated seed:
' 1920831619 1346865774 2006582766 1968819760 332463652 110770792
' 0.71326689 0.50383335 0.50446082 0.66312569 0.94517193 0.58059287
'
' Random numbers from a Random object with an auto-generated seed:
' 254927927 1205531663 1984850027 110020849 1438111494 1697714106
' 0.19383387 0.52067738 0.74162783 0.35063667 0.31247720 0.38773733
'
' Random numbers from a Random object with an auto-generated seed:
' 736507882 1064197552 1963117288 398705585 396275689 1137173773
' 0.67440084 0.53752140 0.97879483 0.03814764 0.67978248 0.19488178
[C#]
// Example of the Random class constructors and Random.NextDouble( )
// method.
using System;
using System.Threading;
public class RandomObjectDemo
{
// Generate random numbers from the specified Random object.
static void RunIntNDoubleRandoms( Random randObj )
{
// Generate the first six random integers.
for( int j = 0; j < 6; j++ )
Console.Write( " {0,10} ", randObj.Next( ) );
Console.WriteLine( );
// Generate the first six random doubles.
for( int j = 0; j < 6; j++ )
Console.Write( " {0:F8} ", randObj.NextDouble( ) );
Console.WriteLine( );
}
// Create a Random object with the specified seed.
static void FixedSeedRandoms( int seed )
{
Console.WriteLine(
"\nRandom numbers from a Random object with " +
"seed = {0}:", seed );
Random fixRand = new Random( seed );
RunIntNDoubleRandoms( fixRand );
}
// Create a random object with a timer-generated seed.
static void AutoSeedRandoms( )
{
// Wait to allow the timer to advance.
Thread.Sleep( 1 );
Console.WriteLine(
"\nRandom numbers from a Random object " +
"with an auto-generated seed:" );
Random autoRand = new Random( );
RunIntNDoubleRandoms( autoRand );
}
static void Main( )
{
Console.WriteLine(
"This example of the Random class constructors and " +
"Random.NextDouble( ) \n" +
"generates the following output.\n" );
Console.WriteLine(
"Create Random objects, and then generate and " +
"display six integers and \nsix doubles from each.");
FixedSeedRandoms( 123 );
FixedSeedRandoms( 123 );
FixedSeedRandoms( 456 );
FixedSeedRandoms( 456 );
AutoSeedRandoms( );
AutoSeedRandoms( );
AutoSeedRandoms( );
}
}
/*
This example of the Random class constructors and Random.NextDouble( )
generates the following output.
Create Random objects, and then generate and display six integers and
six doubles from each.
Random numbers from a Random object with seed = 123:
2114319875 1949518561 1596751841 1742987178 1586516133 103755708
0.01700087 0.14935942 0.19470390 0.63008947 0.90976122 0.49519146
Random numbers from a Random object with seed = 123:
2114319875 1949518561 1596751841 1742987178 1586516133 103755708
0.01700087 0.14935942 0.19470390 0.63008947 0.90976122 0.49519146
Random numbers from a Random object with seed = 456:
2044805024 1323311594 1087799997 1907260840 179380355 120870348
0.21988117 0.21026556 0.39236514 0.42420498 0.24102703 0.47310170
Random numbers from a Random object with seed = 456:
2044805024 1323311594 1087799997 1907260840 179380355 120870348
0.21988117 0.21026556 0.39236514 0.42420498 0.24102703 0.47310170
Random numbers from a Random object with an auto-generated seed:
380213349 127379247 1969091178 1983029819 1963098450 1648433124
0.08824121 0.41249688 0.36445811 0.05637512 0.62702451 0.49595560
Random numbers from a Random object with an auto-generated seed:
861793304 2133528783 1947358439 124230908 921262645 1087892791
0.56880819 0.42934091 0.60162512 0.74388610 0.99432979 0.30310005
Random numbers from a Random object with an auto-generated seed:
1343373259 1992194672 1925625700 412915644 2026910487 527352458
0.04937517 0.44618494 0.83879212 0.43139707 0.36163507 0.11024451
*/
[C++]
// Example of the Random class constructors and Random::NextDouble( )
// method.
#using <mscorlib.dll>
using namespace System;
using namespace System::Threading;
// Generate random numbers from the specified Random object.
void RunIntNDoubleRandoms( Random* randObj )
{
// Generate the first six random integers.
for( int j = 0; j < 6; j++ )
Console::Write( S" {0,10} ", __box( randObj->Next( ) ) );
Console::WriteLine( );
// Generate the first six random doubles.
for( int j = 0; j < 6; j++ )
Console::Write( S" {0:F8} ",
__box( randObj->NextDouble( ) ) );
Console::WriteLine( );
}
// Create a Random object with the specified seed.
void FixedSeedRandoms( int seed )
{
Console::WriteLine(
S"\nRandom numbers from a Random object with seed = {0}:",
__box( seed ) );
Random* fixRand = new Random( seed );
RunIntNDoubleRandoms( fixRand );
}
// Create a random object with a timer-generated seed.
void AutoSeedRandoms( )
{
// Wait to allow the timer to advance.
Thread::Sleep( 1 );
Console::WriteLine(
S"\nRandom numbers from a Random object "
S"with an auto-generated seed:" );
Random* autoRand = new Random( );
RunIntNDoubleRandoms( autoRand );
}
void main( )
{
Console::WriteLine(
S"This example of the Random class constructors and Random"
S"::NextDouble( ) \ngenerates the following output.\n" );
Console::WriteLine(
S"Create Random objects, and then generate and "
S"display six integers and \nsix doubles from each." );
FixedSeedRandoms( 123 );
FixedSeedRandoms( 123 );
FixedSeedRandoms( 456 );
FixedSeedRandoms( 456 );
AutoSeedRandoms( );
AutoSeedRandoms( );
AutoSeedRandoms( );
}
/*
This example of the Random class constructors and Random::NextDouble( )
generates the following output.
Create Random objects, and then generate and display six integers and
six doubles from each.
Random numbers from a Random object with seed = 123:
2114319875 1949518561 1596751841 1742987178 1586516133 103755708
0.01700087 0.14935942 0.19470390 0.63008947 0.90976122 0.49519146
Random numbers from a Random object with seed = 123:
2114319875 1949518561 1596751841 1742987178 1586516133 103755708
0.01700087 0.14935942 0.19470390 0.63008947 0.90976122 0.49519146
Random numbers from a Random object with seed = 456:
2044805024 1323311594 1087799997 1907260840 179380355 120870348
0.21988117 0.21026556 0.39236514 0.42420498 0.24102703 0.47310170
Random numbers from a Random object with seed = 456:
2044805024 1323311594 1087799997 1907260840 179380355 120870348
0.21988117 0.21026556 0.39236514 0.42420498 0.24102703 0.47310170
Random numbers from a Random object with an auto-generated seed:
1624372556 1894939458 302472229 588108304 23919954 1085111949
0.14595512 0.30162298 0.92267372 0.55707657 0.25430079 0.74143239
Random numbers from a Random object with an auto-generated seed:
2105952511 1753605347 280739490 876793040 1129567796 524571616
0.62652210 0.31846701 0.15984073 0.24458755 0.62160607 0.54857684
Random numbers from a Random object with an auto-generated seed:
440048819 1612271236 259006751 1165477776 87731991 2111514930
0.10708907 0.33531104 0.39700773 0.93209853 0.98891135 0.35572129
*/
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
アセンブリ: Mscorlib (Mscorlib.dll 内)