c# - C# - 显示重复的随机数
问题描述
我已经编写了这种生成随机数并在 Windows 窗体内的 labelText 中显示的非常粗略的方法。发生的情况是,对于第二个标签文本,它显示的与第一个标签文本完全相同。希望您就如何更正此问题提供反馈,以便每个标签文本显示唯一的随机数。
private void btnGenerateNumbers_Click(object sender, EventArgs e)
{
List<string> numberStringT = new List<string>();
for (int i = 0; i < 2; i++)
{
string result = "";
Random rnd = new Random();
int one = rnd.Next(1, 49);
int two = rnd.Next(1, 49);
int three = rnd.Next(1, 49);
int four = rnd.Next(1, 49);
int five = rnd.Next(1, 49);
int six = rnd.Next(1, 49);
int seven = rnd.Next(1, 49);
if ((one == two) | (one == three) | (one == four) | (one == five) | (one == six) | (one == seven))
{
one = rnd.Next(1, 49);
}
if ((two == one) | (two == three) | (two == four) | (two == five) | (two == six) | (two == seven))
{
two = rnd.Next(1, 49);
}
if ((three == one) | (three == two) | (three == four) | (three == five) | (three == six) | (three == seven))
{
three = rnd.Next(1, 49);
}
if ((four == one) | (four == two) | (four == three) | (four == five) | (four == six) | (four == seven))
{
four = rnd.Next(1, 49);
}
if ((five == one) | (five == two) | (five == three) | (five == four) | (five == six) | (five == seven))
{
five = rnd.Next(1, 49);
}
if ((six == one) | (six == two) | (six == three) | (six == four) | (six == five) | (six == seven))
{
six = rnd.Next(1, 49);
}
if ((seven == one) | (seven == two) | (seven == three) | (seven == four) | (seven == five) | (seven == six))
{
seven = rnd.Next(1, 49);
}
List<int> numberList = new List<int>();
List<int> numberListNoDuplicates = new List<int>();
numberList.Add(one);
numberList.Add(two);
numberList.Add(three);
numberList.Add(four);
numberList.Add(five);
numberList.Add(six);
numberList.Add(seven);
numberList.Sort();
result = numberList[0].ToString() + " " + numberList[1].ToString() + " " + numberList[2].ToString() + " " + numberList[3].ToString() + " " + numberList[4].ToString() + " " + numberList[5].ToString() + " " + numberList[6].ToString();
numberStringT.Add(result);
numberList.Clear();
result = "";
rnd.Next();
}
//lblRandomNumber.Text = result;
lblRandomNumber.Text = numberStringT[0];
lblRandomNumber2.Text = numberStringT[1];
}
解决方案
将其移到for
循环之外/之前:
Random rnd = new Random();
推荐阅读
- php - FFmpeg:为什么我们需要在转换过程中创建临时文件
- google-maps - 是否必须在 2018 年 6 月 11 日之前通过信用卡信息启用计费帐户才能继续访问 Google Maps API?
- vba - 一次将满足条件的行复制并粘贴到不同的工作簿
- reactjs - reactjs - 模拟时间选择器的数字时间选择器
- docker - GNU Make:启动 Docker 容器,使其执行命令,退出容器,执行脚本
- php - 如何使用 laravel 和 carbon 根据过去 6 个月的给定日期获得每周以下的所有结果
- java - 拒绝服务:正则表达式(输入验证和表示、数据流)
- java - 使用 Spring Security 实现 LDAP 身份验证时出现 Gradle 依赖关系错误
- java - 使用 veiwpager 和 Fragment 返回 null
- ignite - 如何按自定义顺序从映射/集合的值处理 invokeAll EntryProcessor?