本帖最后由 maodian552 于 2014-04-17 16:31:47 编辑

解决方案 »

  1.   

    这样子?小心除0                    (((ulong)random.Next() << 32) + random.Next()) % (max - min) + min;
      

  2.   

    long n = (long)Math.Floor((new Random()).NextDouble() * 1000000000D);
      

  3.   

    好吧自己想出了个临时算法private static long GetTowLongNumRandom(long minNum, long maxNum)
            {
                var num = maxNum - minNum;
                Random random = new Random();
                if (num < int.MaxValue)
                    num = random.Next(0,Convert.ToInt32(num));
                else
                    num = random.Next(0, int.MaxValue);            return minNum + num;        }
      

  4.   


            long l = Convert.ToInt64(new Random().Next(1111111, 9999999).ToString() + new Random().Next(1111111, 9999999).ToString());
      

  5.   

    如上分两截,如果是从0-99999999999999
     long l = Convert.ToInt64(new Random().Next(0, 9999999).ToString().PadLeft(7, '0') + new Random().Next(0, 9999999).ToString().PadLeft(7, '0'));
      

  6.   

    用Random.NextBytes和BitConverter.ToInt64组合
    参考:http://stackoverflow.com/questions/6651554/random-number-in-long-range-is-this-the-way
    long LongRandom(long min, long max, Random rand) {
        byte[] buf = new byte[8];
        rand.NextBytes(buf);
        long longRand = BitConverter.ToInt64(buf, 0);    return (Math.Abs(longRand % (max - min)) + min);
    }
      

  7.   


    两个long整形的是是服务器前台给的,我不能控制,长度也不能确定,所以这样也不行