c#random 为什么得到的随机数是一样的

 我来答
侯九九By
2015-01-30 · TA获得超过538个赞
知道小有建树答主
回答量:366
采纳率:50%
帮助的人:161万
展开全部

  伪随机数,如果在一个时间段点生成的话。肯定是一样的。

  

/// <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)来生成吧。

dyzeke
推荐于2018-03-14 · TA获得超过208个赞
知道小有建树答主
回答量:676
采纳率:60%
帮助的人:327万
展开全部
你把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时,随机数创建用到的时间片段太短,不能产生不同的实例;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿_禁
2015-01-30 · TA获得超过122个赞
知道小有建树答主
回答量:430
采纳率:0%
帮助的人:97.1万
展开全部
因为那是伪随机
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式