黑马程序员技术交流社区
标题:
连连看布局疑问
[打印本页]
作者:
梁思思
时间:
2013-2-19 20:27
标题:
连连看布局疑问
公开课中的WPF中连连看布局,写了这段代码可是随机怎么还是总是显示同一图片。如
<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">
代码如下:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 10; i++)
{
//定义列
ColumnDefinition colDef = new ColumnDefinition();
gridGame.ColumnDefinitions.Add(colDef);
//定义行
RowDefinition rowDef= new RowDefinition();
gridGame.RowDefinitions.Add(rowDef);
}
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
//产生1-9的随机数
Random random=new Random();
int imgName = random.Next(1, 10);
Image img = new Image();
img.Source=new BitmapImage(new Uri("WPF图片/"+imgName+".jpg",UriKind.Relative));//WPF图片为文件夹,有9张图片
Grid.SetRow(img,i);
Grid.SetColumn(img,j);
gridGame.Children.Add(img);
}
}
}
复制代码
未命名.jpg
(79.48 KB, 下载次数: 38)
下载附件
2013-2-19 20:22 上传
作者:
王立
时间:
2013-2-19 20:45
//产生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);
}
}
作者:
梁思思
时间:
2013-2-19 20:55
{:soso_e113:}谢谢,试了下,楼上说得没错!
作者:
岳珅
时间:
2013-2-19 21:05
你把28行的Random random=new Random();移动到13行就行了。。。
或者你把28行改成Random random = new Random(Guid.NewGuid().GetHashCode());这样也行
random只是理论意义上的随机,实际是不随机的。
默认情况下,Random 类的无参数构造函数使用系统时钟生成其种子值,而参数化构造函数可根据当前时间的计时周期数采用 Int32 值。
但是,因为时钟的分辨率有限,所以,如果使用无参数构造函数连续建不同的 Random 对象,就会创建生成相同随机数序列的随机数生成器,你就是因为这里才连续产生了相同的image的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2