2011-11-26 44 views
2

你好,我是WPF的新手,我確實有一些ASP.NET的經驗,但這是全新的,我會做標籤label.Content而不是label.Text,無論如何..我試圖做一個簡單的形式,在點擊該按鈕時,它顯示5個不同的隨機數字。如何隨機在WPF

當我逐行調試此代碼時,它確實隨機化並且有一串不同的數字,但是當我不調試並且一次運行並點擊它顯示相同數字的按鈕? ,不知道爲什麼...所以理想我想有

[1] [23] [45] [24] [34] 

它給我,結果,如果我調試,並逐步完成,但如果我不這麼做調試,只是運行的程序,我得到

[23] [23] [23] [23] [23] 

任何幫助,將不勝感激

public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, RoutedEventArgs e) 
     { 
      int[] numbers = new int[5]; 
      StringBuilder sb = new StringBuilder(); 

      List<int> nums = new List<int>(); 
      foreach (int i in numbers) 
      { 
       int rand = RandomNumber(1,59); 
       nums.Add(rand); 
      } 


      string numsList = string.Empty; 

      foreach (int items in nums) 
      { 
       numsList += "[" + items.ToString() + "]"; 
      } 

      lblNumber.Content = numsList.ToString(); 
     } 

     private int RandomNumber(int min, int max) 
     { 
      Random random = new Random(); 
      return random.Next(min, max); 
     } 


    } 
} 

回答

3

你不應該創建一個新Random每次(使它成爲一個只讀字段,而不是)。如果不久之後創建新的實例,種子可能總是相同的。它只能在調試模式下工作,因爲當您逐步完成時,實例創建速度會更慢。

MSDN:

缺省情況下,隨機類的參數的構造使用系統時鐘以產生其種子值,而它的參數的構造可以基於蜱的在當前時間的數取一個Int32值。但是,由於時鐘具有有限的分辨率,因此使用無參數構造函數以緊密連續的方式創建不同的隨機對象會產生隨機數發生器,從而產生相同的隨機數序列。