黑马程序员技术交流社区

标题: 连连看棋盘问题 [打印本页]

作者: 赵科铭    时间: 2014-3-16 20:41
标题: 连连看棋盘问题
本帖最后由 赵科铭 于 2014-3-20 00:32 编辑
  1.         for (int i = 0; i < 10; i++)
  2.             {
  3.                 ColumnDefinition colDef = new ColumnDefinition();
  4.                 gridGame.ColumnDefinitions.Add(colDef);

  5.                 RowDefinition rowDef = new RowDefinition();
  6.                 gridGame.RowDefinitions.Add(rowDef);
  7.             }
复制代码
  1. for (int i = 0; i < 10; i++)
  2.             {
  3.                 for (int j = 0; j < 10; j++)
  4.                 {
  5.                     Image img = new Image();

  6.                     Random rand = new Random();
  7.                     int imgNum = rand.Next(1,10);//随机生成1-9的数
  8.                     img.Source = new BitmapImage(new Uri("imgs/"+imgNum+".jpg",UriKind.Relative));

  9.                     Grid.SetRow(img,i);
  10.                     Grid.SetColumn(img,j);

  11.                     gridGame.Children.Add(img);
  12.                 }
  13.             }
复制代码

为什么生成图片是这样的?

作者: mdb    时间: 2014-3-16 21:42
本帖最后由 mdb 于 2014-3-16 21:53 编辑

把   Random rand = new Random();放到循环外面试试
Random是一个产生伪随机数字的类,直接New Random()的话它会根据触发那刻的系统时间做为种子,来产生一个随机数字,直接每次都重新NEW一下,而且计算机运行很快所以可能会产生一样的随机数,伪随机的数字,在Random的内部产生机制中还是有一定规律的,并非是真正意义上的完全随机。
作者: 赵科铭    时间: 2014-3-16 22:30
mdb 发表于 2014-3-16 21:42
把   Random rand = new Random();放到循环外面试试
Random是一个产生伪随机数字的类,直接New Random()的 ...

你的意思 是 如果每次在 for循环里  new Random()的话,很可能一样?
作者: xydsdsr    时间: 2014-3-16 23:30
每次for循环都创建一个Random类对象,因为for很快,这样会让每次创建时用的种子几乎一样,而放到外面,就会避免这样的问题,只创建一次。
作者: mdb    时间: 2014-3-17 01:09
赵科铭 发表于 2014-3-16 22:30
你的意思 是 如果每次在 for循环里  new Random()的话,很可能一样?

是的,最好放到两个for循环之外...
作者: 贰的23次方    时间: 2014-3-17 22:19
随机种子跟系统时间有关,内层程序运行是非常快的毫秒可能都不到,所以系统一毫秒内你随机数随机种子相同,只用一个种子就行了,放到外层循环外边
作者: czwanglei    时间: 2014-3-19 10:42
请把问题设置为提问结束,这样可以给你加分。。
作者: 赵科铭    时间: 2014-3-19 19:23
czwanglei 发表于 2014-3-19 10:42
请把问题设置为提问结束,这样可以给你加分。。

怎么设置啊?
作者: czwanglei    时间: 2014-3-19 21:04
赵科铭 发表于 2014-3-19 19:23
怎么设置啊?

编辑帖子。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2