关于随机数生成的疑惑
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script runat=server>
void Page_Load(Object sender , EventArgs e)
{
for(int i= 1;i<100;i++) {
int number=0;
System.Random random = new Random();
number = random.Next(99999999);
Response.Write(number+"!!!!");
}
}
</script>
为什么我用这段代码只能生成99个相同的数 而用下段代码才能生成99个不同的随机数呢
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script runat=server>
void Page_Load(Object sender , EventArgs e)
{
System.Random random = new Random();
for(int i= 1;i<100;i++)
{
int number=0;
number = random.Next(99999999);
Response.Write(number+"!!!!");
}
}
</script>
问题点数:20、回复次数:4Top
1 楼saucer(思归)回复于 2006-02-14 04:32:31 得分 20
因为System.Random使用当前时钟作为种子(seed),接着调用.Next()会产生一系列不同的随机数
但System.Random所用的时钟的分辨率不高,如果你连续使用
System.Random random = new Random();
因为你第一个循环执行得很快,这些random对象的种子完全可能是一样的,这么其后产生的随机数是一样的Top
2 楼dafeifei(大飞飞)回复于 2006-02-14 08:10:00 得分 0
有道理Top
3 楼wangq008(硅基中尉)回复于 2006-02-14 17:48:51 得分 0
呵呵,非常感谢,那照这个样子,asp.net岂不是不能产生即时的随机数了?Top
4 楼dsclub(任搏软)回复于 2006-02-14 17:54:25 得分 0
同意思归。Top




