无聊做着玩一个应用random生成机选彩票的小程序。
遇到一个问题求高手解惑。
代码如下:
遇到一个问题求高手解惑。
代码如下:
public string GetCaipiao()
{
Random ran = new Random();
int[] arr = new int[7];
for (int i = 0; i < arr.Length; i++)
{
int RandKey = ran.Next(1, 33); //产生一个1-35之间的数
do
{
RandKey = ran.Next(1, 33);
}
while (arr.Contains(RandKey));
arr[i] = RandKey;
}
arr = GetArray(arr);//排序
StringBuilder sb = new StringBuilder();
//输出
foreach (int num in arr)
{
sb.Append(num.ToString());
if (num != arr[arr.Length - 1])
sb.Append(",");
}
int x = ran.Next(1, 16);
sb.Append("+" + x);
return sb.ToString();
}
这个是生成一注彩票。
int n = 0;
StringBuilder str = new StringBuilder();
switch (cbx_Time.Text)
{
case "1":
str.Append(GetCaipiao());
break;
case "5":
while (n < 5)
{
str.AppendLine(GetCaipiao());
n++;
}
break;
default:
for (int i = 0; i < 10; i++)
{
str.AppendLine(GetCaipiao());
}
break;
}
txt_Show.Text = str.ToString();
但是为什么当本人一次生成五注的时候,五注都是一样的。这跟random的特性有什么关系吗,
而且打了断点以后再执行,五注到是不一样了,求高手大致解释一下
解决方案
10
Random ran = new Random();
默认是用时间当的种子,原因是程序运行的很快,所以短时间内随机出来的数字都一样
一般的用法,要不每次你用不同的种子来取随机数,要不就是你用同一个Random对象来生成不同的随机数
默认是用时间当的种子,原因是程序运行的很快,所以短时间内随机出来的数字都一样
一般的用法,要不每次你用不同的种子来取随机数,要不就是你用同一个Random对象来生成不同的随机数
20
看Random说明书(特别是备注第二段第二句):
https://msdn.microsoft.com/zh-cn/library/h343ddh9(v=vs.100).aspx
https://msdn.microsoft.com/zh-cn/library/h343ddh9(v=vs.100).aspx