class roll
{
public static void Main()
{
int one=0,
two=0,
three=0,
four=0,
five=0,
six=0,
time=one+two+three+four+five+six;
//System.Random rnd=new System.Random();//奇怪地方1
while(time<100)
{
System.Random rnd=new System.Random();//奇怪地方2
int roll=(int) rnd.Next(1,7);
System.Console.WriteLine("Roll {0} is {1}",time+1,roll);
switch(roll)
{
case 1:one++;break;
case 2:two++;break;
case 3:three++;break;
case 4:four++;break;
case 5:five++;break;
case 6:six++;break;
default:System.Console.WriteLine("not 1 to 6");break;
}
time=one+two+three+four+five+six;
}
System.Console.WriteLine("print one point time:{0}",one);
System.Console.WriteLine("print two point time:{0}",two);
System.Console.WriteLine("print three point time:{0}",three);
System.Console.WriteLine("print four point time:{0}",four);
System.Console.WriteLine("print five point time:{0}",five);
System.Console.WriteLine("print six point time:{0}",six);
}
}上面是个简单的Roll程序,现在运行则结果很集中
print one point time:0
print two point time:0
print three point time:0
print four point time:74
print five point time:26
print six point time:0
如果现在单步执行,则结果分布均匀,达到预期效果
print one point time:18
print two point time:17
print three point time:15
print four point time:15
print five point time:17
print six point time:18
当把奇怪地方2注释掉,用奇怪地方1运行,则结果分布正常
print one point time:18
print two point time:20
print three point time:12
print four point time:18
print five point time:17
print six point time:15
谁能帮我详细解释一下,谢谢GGJJDDMM帮忙!!
{
public static void Main()
{
int one=0,
two=0,
three=0,
four=0,
five=0,
six=0,
time=one+two+three+four+five+six;
//System.Random rnd=new System.Random();//奇怪地方1
while(time<100)
{
System.Random rnd=new System.Random();//奇怪地方2
int roll=(int) rnd.Next(1,7);
System.Console.WriteLine("Roll {0} is {1}",time+1,roll);
switch(roll)
{
case 1:one++;break;
case 2:two++;break;
case 3:three++;break;
case 4:four++;break;
case 5:five++;break;
case 6:six++;break;
default:System.Console.WriteLine("not 1 to 6");break;
}
time=one+two+three+four+five+six;
}
System.Console.WriteLine("print one point time:{0}",one);
System.Console.WriteLine("print two point time:{0}",two);
System.Console.WriteLine("print three point time:{0}",three);
System.Console.WriteLine("print four point time:{0}",four);
System.Console.WriteLine("print five point time:{0}",five);
System.Console.WriteLine("print six point time:{0}",six);
}
}上面是个简单的Roll程序,现在运行则结果很集中
print one point time:0
print two point time:0
print three point time:0
print four point time:74
print five point time:26
print six point time:0
如果现在单步执行,则结果分布均匀,达到预期效果
print one point time:18
print two point time:17
print three point time:15
print four point time:15
print five point time:17
print six point time:18
当把奇怪地方2注释掉,用奇怪地方1运行,则结果分布正常
print one point time:18
print two point time:20
print three point time:12
print four point time:18
print five point time:17
print six point time:15
谁能帮我详细解释一下,谢谢GGJJDDMM帮忙!!
解决方案 »
- 在datagridview中按键盘中的上下箭头事件是什么?
- 读EXCEL 中DATE CELL是空
- GDI得TextRenderer.DrawText 方法画的文字超出指定矩形的边界
- C#中对话框弹出显示不了路径是怎么回事啊?
- 对程序集进行强名称验证失败?如何解决
- 在线等!好郁闷的问题!
- 麻烦推荐两本学习C#的好书!
- 在window form中如何连sql server数据库,谢谢
- 问一个简单的,偶想使得textBox的 foreColor 不断得变化,变化范围是 Color中所有的颜色。也就是循环变化,但不死机。
- 一个Datagrid表增删改的怪问题
- windows程序中获得TreeView所选节点的Tag值?
- (在线等)怎么在没有鼠标事件的控件中加入自定义鼠标事件
默认种子值是从系统时钟派生而来的。但是,在高性能系统上生成随机数时,系统时钟值可能不会产生预期的行为。
如果应用程序需要不同的随机数序列,则使用不同的种子值重复调用此构造函数。一种产生唯一种子值的方法是使它与时间相关。
Random rdm1 = new Random(unchecked((int)DateTime.Now.Ticks));