该死的Random

aiouw 2012-03-26 03:58:25

for(int i=0;i<4;i++)
{

Random random = new Random();
int v=random.Next(0, 10000) ;
}




循环4次,4次值竟然一样...
...全文
213 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
美丽的鸡翅膀 2012-03-28
  • 打赏
  • 举报
回复
我也遇到过这个问题,它是需要初始化的,可以直接在里面放个值Random random = new Random(0);
reachern 2012-03-28
  • 打赏
  • 举报
回复
我好像也听说过 。这个random是个伪随机函数。不是完全意义上的彻底投掷骰子意义上的随机。菜头,随便说的。顺便挣积分。嘎嘎。
Jabin. 2012-03-28
  • 打赏
  • 举报
回复
赞一个
  • 打赏
  • 举报
回复
[Quote=引用楼主 aiouw 的回复:]
C# code

for(int i=0;i<4;i++)
{

Random random = new Random();
int v=random.Next(0, 10000) ;
}


循环4次,4次值竟然一样...
[/Quote]


最简单的模式,是把它直接声明为static的。这样你才找不到机会抱怨“该死的”呢!
  • 打赏
  • 举报
回复
碰到问题是好事,只有碰到问题才能加深理解。
深海之蓝 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bdmh 的回复:]
Random random = new Random();
放到for循环外面
[/Quote]
是的
IT小金 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mizuho_2006 的回复:]

C# code

Random random = new Random();
for(int i=0;i<4;i++)
{
int v=random.Next(0, 10000) ;
}
[/Quote]

就在这样!
kuohai 2012-03-27
  • 打赏
  • 举报
回复
谢谢,以后注意了!一定要放循环外面
足球中国 2012-03-26
  • 打赏
  • 举报
回复
不知道楼主学编程从哪开始学的。这个东西书上不是写的很清楚。
种子,种子。种子一样。当然是一样的。
ycproc 2012-03-26
  • 打赏
  • 举报
回复
Icedmilk 2012-03-26
  • 打赏
  • 举报
回复
接分

考虑性能也不该频繁的new Random
lele1028265767 2012-03-26
  • 打赏
  • 举报
回复
外边飞过········接分
Jelena景 2012-03-26
  • 打赏
  • 举报
回复
Random random = new Random();

放到循环外面是对的
Jelena景 2012-03-26
  • 打赏
  • 举报
回复
把他放到列表里面,然后比对一下,如果一样的话,就舍弃重新循环啦
public int[] Result(int m)
{
Random rd = new Random(~unchecked((int)DateTime.Now.Ticks));
List<int> lit = new List<int>(m);
for (int i = 0; i < m; i++)
{
int intT = rd.Next(1, 100);
if (lit.Contains(intT))
{
--i;
continue;
}
else
{
lit.Add(intT);
}
}
return Result;
}
aiouw 2012-03-26
  • 打赏
  • 举报
回复
csdn 回复这么快...我只是让大家注意这个问题...
bdmh 2012-03-26
  • 打赏
  • 举报
回复
Random random = new Random();
放到for循环外面
aiouw 2012-03-26
  • 打赏
  • 举报
回复
大家使用一定要当心这个Random()

正确:





Random random = new Random();

for(int i=0;i<4;i++)
{

int v=random.Next(0, 10000) ;
}





mizuho_2006 2012-03-26
  • 打赏
  • 举报
回复

Random random = new Random();
for(int i=0;i<4;i++)
{
int v=random.Next(0, 10000) ;
}

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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