我的問題是:爲什麼變量「_random」在行爲被定義爲靜態/非靜態時發生變化?爲什麼隨機變量的行爲在定義爲靜態或非靜態時有所不同?
==>靜態定義時:_random.nextDouble()返回真正的隨機值。
==> when not:_random.nextDouble()返回幾乎相同的值。
class Shape
{
protected Canvas _canvas;
protected UIElement _element;
static Random _random = new Random();
public Shape(Canvas canvas)
{
_canvas = canvas;
}
public void Draw()
{
double val1 = _canvas.ActualWidth * _random.NextDouble();
double val2 = _canvas.ActualHeight * _random.NextDouble();
_element.SetValue(Canvas.LeftProperty, val1);
_element.SetValue(Canvas.TopProperty, val2);
_canvas.Children.Add(_element);
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Shape s1 = new Circle(MemoCanvas);
for (int i = 0; i < 100; i++)
{
Shape shape1 = new Circle(MemoCanvas);
shape1.Draw();
Shape shape2 = new Square(MemoCanvas);
shape2.Draw();
}
}
}
注意:不知何故,我無法格式化我的帖子,對不起。
問候
查看[Random ctor](https://msdn.microsoft.com/en-us/library/h343ddh9(v = vs.110).aspx)頁面上的註釋:*默認種子值源自系統時鐘並具有有限的分辨率。因此,通過對默認構造函數的調用而緊密連續創建的不同Random對象將具有相同的默認種子值,因此將產生相同的隨機數集合。* – Clemens