代码:
static
void
Main(
string
[] args)
{
int guess, number, guesses = 0;
number = new Random((int)DateTime.Now.Ticks).Next( 0, 10 );
do
{
++guesses;
Console.Write( "Enter a number between 1 and 10: " );
guess = Int32.Parse( Console.ReadLine() );
if( guess < number )
Console.WriteLine( "Too low. Pick a higher number" );
else if ( guess > number )
Console.WriteLine( "Too high. Pick a lower number" );
} while (guess != number );
Console.WriteLine( "You are correct and it only took you "+"{0} guesses!", guesses );
}
{
int guess, number, guesses = 0;
number = new Random((int)DateTime.Now.Ticks).Next( 0, 10 );
do
{
++guesses;
Console.Write( "Enter a number between 1 and 10: " );
guess = Int32.Parse( Console.ReadLine() );
if( guess < number )
Console.WriteLine( "Too low. Pick a higher number" );
else if ( guess > number )
Console.WriteLine( "Too high. Pick a lower number" );
} while (guess != number );
Console.WriteLine( "You are correct and it only took you "+"{0} guesses!", guesses );
}
PS:
如果应用程序在一个较快的计算机上运行,则该计算机的系统时钟可能没有时间在此构造函数的调用之间进行更改,Random 的不同实例的种子值可能相同。这种情况下,请应用一个算法来区分每个调用的种子值。
例如,以下的 C# 表达式使用按位求补运算来生成两个不同的种子值,即使系统时间值相同也可以。
Random rdm1 = new
Random(unchecked((int)DateTime.Now.Ticks));
Random rdm2 = new
Random(~unchecked((int)DateTime.Now.Ticks));