A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁思思 中级黑马   /  2013-2-19 20:27  /  1658 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. 公开课中的WPF中连连看布局,写了这段代码可是随机怎么还是总是显示同一图片。如
  2. <img border="0" alt="" src="http://bbs.itheima.com/forum.php?mod=image&aid=12622&size=300x300&key=26cd415d14f6660f1e8bf8fb3e4afb5b&nocache=yes&type=fixnone" aid="attachimg_12622">
  3. 代码如下:
  4. public partial class MainWindow : Window
  5.     {
  6.         public MainWindow()
  7.         {
  8.             InitializeComponent();
  9.         }

  10.         private void Window_Loaded(object sender, RoutedEventArgs e)
  11.         {
  12.            
  13.             for (int i = 0; i < 10; i++)
  14.             {
  15.                //定义列
  16.                 ColumnDefinition colDef = new ColumnDefinition();
  17.                 gridGame.ColumnDefinitions.Add(colDef);
  18.                //定义行
  19.                 RowDefinition rowDef= new RowDefinition();
  20.                 gridGame.RowDefinitions.Add(rowDef);
  21.             }
  22.             for (int i = 0; i < 10; i++)
  23.             {
  24.                 for (int j = 0; j < 10; j++)
  25.                 {
  26.                      //产生1-9的随机数
  27.                     Random random=new Random();
  28.                     int imgName = random.Next(1, 10);
  29.                     Image img = new Image();
  30.                     img.Source=new BitmapImage(new Uri("WPF图片/"+imgName+".jpg",UriKind.Relative));//WPF图片为文件夹,有9张图片
  31.                     Grid.SetRow(img,i);
  32.                     Grid.SetColumn(img,j);
  33.                     gridGame.Children.Add(img);

  34.                 }
  35.             }
  36.         }
复制代码

未命名.jpg (79.48 KB, 下载次数: 35)

未命名.jpg

3 个回复

倒序浏览
     //产生1-9的随机数
                    Random random=new Random();这句代码放到循环外面,如果放到里面随机数种子一样,短时间内的随机数都一样



//产生1-9的随机数
            Random random = new Random();
            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                  
                    int imgName = random.Next(1, 10);
                    Image img = new Image();
                    img.Source = new BitmapImage(new Uri(@"WPF图片/"+imgName+".png", UriKind.Relative));//WPF图片为文件夹,有9张图片
                    Grid.SetRow(img, i);
                    Grid.SetColumn(img, j);
                    gridGame.Children.Add(img);

                }
            }

回复 使用道具 举报
{:soso_e113:}谢谢,试了下,楼上说得没错!
回复 使用道具 举报
你把28行的Random random=new Random();移动到13行就行了。。。
或者你把28行改成Random random = new Random(Guid.NewGuid().GetHashCode());这样也行
random只是理论意义上的随机,实际是不随机的。
默认情况下,Random 类的无参数构造函数使用系统时钟生成其种子值,而参数化构造函数可根据当前时间的计时周期数采用 Int32 值。
但是,因为时钟的分辨率有限,所以,如果使用无参数构造函数连续建不同的 Random 对象,就会创建生成相同随机数序列的随机数生成器,你就是因为这里才连续产生了相同的image的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马