Random.NextDouble Método
Definição
Retorna um número de ponto flutuante aleatório maior ou igual a 0,0 e menor que 1.0.Returns a random floating-point number that is greater than or equal to 0.0, and less than 1.0.
public:
virtual double NextDouble();
public virtual double NextDouble ();
abstract member NextDouble : unit -> double
override this.NextDouble : unit -> double
Public Overridable Function NextDouble () As Double
Retornos
Um número de ponto flutuante de precisão dupla maior ou igual a 0,0 e menor que 1,0.A double-precision floating point number that is greater than or equal to 0.0, and less than 1.0.
Exemplos
O exemplo a seguir usa NextDouble o método para gerar sequências de duplos aleatórios.The following example uses the NextDouble method to generate sequences of random doubles.
// Example of the Random class constructors and Random::NextDouble( )
// method.
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( " {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.
void FixedSeedRandoms( int seed )
{
Console::WriteLine( "\nRandom numbers from a Random object with seed = {0}:", seed );
Random^ fixRand = gcnew 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( "\nRandom numbers from a Random object "
"with an auto-generated seed:" );
Random^ autoRand = gcnew Random;
RunIntNDoubleRandoms( autoRand );
}
int main()
{
Console::WriteLine( "This example of the Random class constructors and Random"
"::NextDouble( ) \ngenerates 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:
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
*/
// 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
*/
' Example of the Random class constructors and Random.NextDouble( )
' method.
Imports System.Threading
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
O exemplo a seguir chama NextDouble o método para gerar 100 números aleatórios e exibe sua distribuição de frequência.The following example calls the NextDouble method to generate 100 random numbers and displays their frequency distribution.
int[] frequency = new int[10];
double number;
Random rnd = new Random();
for (int ctr = 0; ctr <= 99; ctr++) {
number = rnd.NextDouble();
frequency[(int) Math.Floor(number*10)] ++;
}
Console.WriteLine("Distribution of Random Numbers:");
for (int ctr = frequency.GetLowerBound(0); ctr <= frequency.GetUpperBound(0); ctr++)
Console.WriteLine("0.{0}0-0.{0}9 {1}", ctr, frequency[ctr]);
// The following example displays output similar to the following:
// Distribution of Random Numbers:
// 0.00-0.09 16
// 0.10-0.19 8
// 0.20-0.29 8
// 0.30-0.39 11
// 0.40-0.49 9
// 0.50-0.59 6
// 0.60-0.69 13
// 0.70-0.79 6
// 0.80-0.89 9
// 0.90-0.99 14
Module Example
Public Sub Main()
Dim frequency(9) As Integer
Dim number As Double
Dim rnd As New Random()
For ctr As Integer = 0 To 99
number = rnd.NextDouble()
frequency(CInt(Math.Floor(number*10))) += 1
Next
Console.WriteLine("Distribution of Random Numbers:")
For ctr As Integer = frequency.GetLowerBound(0) To frequency.GetUpperBound(0)
Console.WriteLine("0.{0}0-0.{0}9 {1}", ctr, frequency(ctr))
Next
End Sub
End Module
' The following example displays output similar to the following:
' Distribution of Random Numbers:
' 0.00-0.09 16
' 0.10-0.19 8
' 0.20-0.29 8
' 0.30-0.39 11
' 0.40-0.49 9
' 0.50-0.59 6
' 0.60-0.69 13
' 0.70-0.79 6
' 0.80-0.89 9
' 0.90-0.99 14
Comentários
O limite superior real do número aleatório retornado por esse método é 0.99999999999999978.The actual upper bound of the random number returned by this method is 0.99999999999999978.
Para recuperar valores de ponto flutuante aleatórios dentro de um intervalo diferente de 0,0 e 1,0, consulte a seção "recuperar valores de ponto flutuante em um intervalo especificado" Random do tópico da classe.To retrieve random floating-point values within a range other than 0.0 and 1.0, see the "Retrieve floating-point values in a specified range" section of the Random class topic.
Esse método é a versão pública do método protegido, Sample.This method is the public version of the protected method, Sample.