奇怪随机问题

arecaiz 2011-04-11 05:24:38
代码如下  生成的十条下们的随机字符串  但十条基本都是重复,  但是用VS调试时不会重复!
string html = string.Empty;
Random ran = new Random();
for (int i = 0; i < 10; i++)
{
string core = "q,w,e,r,t,y,u,i,o,p,a,s,f,g,h,j,k,l,z,x,c,v,b,n,m,Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M,0,1,2,3,4,5,6,7,8,9";
string[] strList = core.Split(',');
string sn = string.Empty;
for (int j = 0; j < 10; j++)
{
sn += strList[ran.Next(0,61)];
}
//model.Bonus_sn = sn;
//bonus.Add(model);
html += sn + "<br/>";
}
Response.Write(html);


代码修改成 成如下后正常(注意红色部分) 

string html = string.Empty;
Random ran = new Random();
for (int i = 0; i < 10; i++)
{
string core = "q,w,e,r,t,y,u,i,o,p,a,s,f,g,h,j,k,l,z,x,c,v,b,n,m,Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M,0,1,2,3,4,5,6,7,8,9";
string[] strList = core.Split(',');
string sn = string.Empty;
for (int j = 0; j < 10; j++)
{
sn += strList[ran.Next(0,61)];
}
//model.Bonus_sn = sn;
//bonus.Add(model);
html += sn + "<br/>";
}
Response.Write(html);
...全文
192 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
C26029 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 arecaiz 的回复:]
查了相关文档  知道了
[/Quote]



是什么原因呢。让我们也明白一下哦。楼主。。
arecaiz 2011-04-11
  • 打赏
  • 举报
回复
查了相关文档  知道了
arecaiz 2011-04-11
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 hch126163 的回复:]
Random ran = new Random();

加随机种子
[/Quote]

这个方式可以解决  

但是还是不理解为什么会重复
booth.chen 2011-04-11
  • 打赏
  • 举报
回复
我拷你的代码运行 并没有出现重复的现象~
变量的声明最好写在外面
不然就重复声明了 100次

string html = string.Empty;
string core = "q,w,e,r,t,y,u,i,o,p,a,s,f,g,h,j,k,l,z,x,c,v,b,n,m,Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M,0,1,2,3,4,5,6,7,8,9";
string[] strList = core.Split(',');
string sn = string.Empty;
Random ran = new Random();
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
Application.Lock();
sn += strList[ran.Next(0, 61)];
Application.UnLock();
}
//model.Bonus_sn = sn;
//bonus.Add(model);
html += sn + "<br/>";
}
Response.Write(html);
booth.chen 2011-04-11
  • 打赏
  • 举报
回复
Application.Lock();
sn += strList[ran.Next(0, 61)];
Application.UnLock();

这样写试一下
hch126163 2011-04-11
  • 打赏
  • 举报
回复
Random ran = new Random();

加随机种子
arecaiz 2011-04-11
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 chbos 的回复:]
引用 14 楼 arecaiz 的回复:

主要是不知道为什么这样


因为你写的 for 循环有问题
[/Quote]

能说明白一点吗
booth.chen 2011-04-11
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 arecaiz 的回复:]

主要是不知道为什么这样
[/Quote]

因为你写的 for 循环有问题

arecaiz 2011-04-11
  • 打赏
  • 举报
回复
主要是不知道为什么这样
booth.chen 2011-04-11
  • 打赏
  • 举报
回复
贴一个简单的写法:
int numeber;
char code;
string sn = string.Empty;
Random random = new Random();
for (int i = 0; i < 10; i++)
{
numeber = random.Next();
if (numeber % 2 == 0)
{
code = (char)('0' + (char)(numeber % 10));
}
else if (numeber % 3==0 && numeber % 2 != 0)
{
code = (char)('a' + (char)(numeber % 26));
}
else
{
code = (char)('A' + (char)(numeber % 26));
}
sn += "<br />"+code.ToString() + "<br />";

}
Response.Write(sn);
arecaiz 2011-04-11
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 moonwrite 的回复:]
看不到差别 也许只是碰巧
Random ra=new Random(61)

List<string> list=new List<string>
for (int j = 0; j < 10; j++)
{
int i=ra.next();
string aa = strList[i];
if(list.contain(aa))
{ j-- ; }els……
[/Quote]

不是碰巧  是每次都这样   高手们可以去运行一下

如果用VS 逐行调试又是没问题的
moonwrite 2011-04-11
  • 打赏
  • 举报
回复
看不到差别 也许只是碰巧
Random ra=new Random(61)

List<string> list=new List<string>
for (int j = 0; j < 10; j++)
{
int i=ra.next();
string aa = strList[i];
if(list.contain(aa))
{ j-- ; }else{list.add(aa);}
}

string result=string.join(",",list.toArray());
arecaiz 2011-04-11
  • 打赏
  • 举报
回复
上面的输出的结果  基本都是重复的

下面输出的结果  是没有重复的
qq346127416 2011-04-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 arecaiz 的回复:]
引用 7 楼 qq346127416 的回复:
我怎么看 这2段代码都一样呢


Random ran = new Random();
的位置不一样

我觉得运行是一样的。。。但结果就不一样
[/Quote]

string html = string.Empty;
Random ran = new Random();
for (int i = 0; i < 10; i++)


string html = string.Empty;
Random ran = new Random();
for (int i = 0; i < 10; i++)

能解释一下怎么不一样么
arecaiz 2011-04-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qq346127416 的回复:]
我怎么看 这2段代码都一样呢
[/Quote]

Random ran = new Random();
的位置不一样

我觉得运行是一样的。。。但结果就不一样
qq346127416 2011-04-11
  • 打赏
  • 举报
回复
我怎么看 这2段代码都一样呢
arecaiz 2011-04-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bancxc 的回复:]
怎么看红色部分都是一样的
[/Quote]

红色代码位置是不一样的
arecaiz 2011-04-11
  • 打赏
  • 举报
回复
上面的代码一定会重复 

下面的代码主不会重复 

不明白所以问大家
  • 打赏
  • 举报
回复
随机重复不正常吗
bancxc 2011-04-11
  • 打赏
  • 举报
回复
try Random ra=new Random(iSeed);
加载更多回复(2)

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧