如何在WPF中随机化
本文关键字:随机化 WPF | 更新日期: 2023-09-27 18:15:40
你好,我是WPF的新手,我确实有一些ASP的经验。但这是全新的,标签我将做label.Content
而不是label.Text
,无论如何…我试图做一个简单的形式,在点击按钮,它显示5个不同的随机数..
当我逐行调试此代码时,它确实随机化并有一串不同的数字,但当我不调试并立即运行它并单击按钮时,它显示了所有相同的数字?,不知道为什么……理想情况下应该是
[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);
}
}
}
您不应该每次都创建一个新的Random
(将其改为只读字段)。当一个接一个地创建新实例时,种子可能总是相同的。它只能在调试模式下工作,因为当您逐步执行时,创建实例的速度会更慢。
MSDN:
默认情况下,Random类的无参数构造函数使用系统时钟来生成它的种子值,而它的参数化构造函数可以根据当前时间的滴答数取一个Int32值。然而,由于时钟具有有限的分辨率,使用无参数构造函数创建紧密连续的不同Random对象会创建产生相同随机数序列的随机数生成器。