c#random 为什么得到的随机数是一样的
展开全部
伪随机数,如果在一个时间段点生成的话。肯定是一样的。
/// <summary>
/// 生成N位的随机数 全数字
/// </summary>
/// <param name="len"></param>
/// <returns></returns>
public static string GetRandom(int len)
{
string k = "";
Random rand = new Random(GetRandomSeed());
for (int i = 0; i < len; i++)
{
k += rand.Next(0, 10).ToString();
}
return k;
}
/// <summary>
/// 取随机数种子
/// </summary>
/// <returns></returns>
public static int GetRandomSeed()
{
byte[] bytes = new byte[4];
System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
rng.GetBytes(bytes);
return BitConverter.ToInt32(bytes, 0);
}
全用GetRandom(16)来生成吧。
展开全部
你把Random先实例化
再调用Random.Next();
用实例来说一下,
static void Main(string[] args)
{
Test();
TestTwo();
Console.ReadKey();
}
static Random r = new Random();
static void Test()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(r.Next());
}
}
static void TestTwo()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(new Random().Next());
}
}
第一种会产生随机数,
第二种会一样
是因为第二种,在创建Random时,随机数创建用到的时间片段太短,不能产生不同的实例;
再调用Random.Next();
用实例来说一下,
static void Main(string[] args)
{
Test();
TestTwo();
Console.ReadKey();
}
static Random r = new Random();
static void Test()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(r.Next());
}
}
static void TestTwo()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(new Random().Next());
}
}
第一种会产生随机数,
第二种会一样
是因为第二种,在创建Random时,随机数创建用到的时间片段太短,不能产生不同的实例;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为那是伪随机
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询