gpt4 book ai didi

c# - 如何在 WPF 中随机化

转载 作者:行者123 更新时间:2023-11-30 22:33:28 25 4
gpt4 key购买 nike

你好,我是 WPF 的新手,我在 ASP.NET 方面确实有一些经验,但这是全新的,比如我会做的标签 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(改为只读字段)。否则,当一个接一个地创建新实例时,种子可能总是相同的。它仅在 Debug模式下有效,因为当您单步执行时实例创建速度较慢。

MSDN:

By default, the parameterless constructor of the Random class uses the system clock to generate its seed value, while its parameterized constructor can take an Int32 value based on the number of ticks in the current time. However, because the clock has finite resolution, using the parameterless constructor to create different Random objects in close succession creates random number generators that produce identical sequences of random numbers.

关于c# - 如何在 WPF 中随机化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8275649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com