如何在C#中生成一个随机的10位数字?

时间:2011-08-14 06:52:14

标签: c# .net asp.net random

我正在使用C#,我需要生成一个随机的10位数字。到目前为止,我很幸运找到了表明最小值的例子。我如何生成一个10位数的随机数,可以从0开始,(最初,我希望random.Next(1000000000,9999999999),但我怀疑这是我想要的。)

我的代码现在看起来像这样:

    [WebMethod]
    public string GenerateNumber()
    {
        Random random = new Random();
        return random.Next(?);
    }

**更新结束了这样做,

    [WebMethod]
    public string GenerateNumber()
    {
        Random random = new Random();
        string r = "";
        int i;
        for (i = 1; i < 11; i++)
        {
            r += random.Next(0, 9).ToString();
        }
        return r;
    }

13 个答案:

答案 0 :(得分:10)

尝试(虽然不是绝对准确)

Random R = new Random();

return ((long)R.Next (0, 100000 ) * (long)R.Next (0, 100000 )).ToString ().PadLeft (10, '0');

答案 1 :(得分:9)

使用此选项可以创建任意长度的随机数字

 public string RandomDigits(int length)
    {
        var random = new Random();
        string s = string.Empty;
        for (int i = 0; i < length; i++)
            s = String.Concat(s, random.Next(10).ToString());
        return s;
    }

答案 2 :(得分:5)

如果你想要十个数字,但你允许以0 开头,那么听起来你想要生成一个字符串,而不是一个长整数。

生成一个10个字符的字符串,其中每个字符从“0”中随机选择。“9”。

答案 3 :(得分:3)

(1000000000,9999999999)不是随机的 - 你要求它不能以1开头,所以你已经将你的目标基数减少了10%。

Random是一个double,所以如果你想要一个整数,将它乘以1,000,000,000,然后在小数位后面放下数字。

答案 4 :(得分:3)

private void button1_Click(object sender, EventArgs e)
{
   Random rand = new Random();
   long randnum2 = (long)(rand.NextDouble() * 9000000000) + 1000000000;
   MessageBox.Show(randnum2.ToString());
}

答案 5 :(得分:1)

private static Random random = new Random((int)DateTime.Now.Ticks);//thanks to McAden

public long LongBetween(long maxValue, long minValue)
{
    return (long)Math.Round(random.NextDouble() * (maxValue - minValue - 1)) + minValue;
}

答案 6 :(得分:1)

   //Ten digits 
   public string CreateRandomNumber
   {
        get
        {
            //returns 10 digit random number (Ticks returns 16 digit unique number, substring it to 10)
            return DateTime.UtcNow.Ticks.ToString().Substring(8); 
        }
    }

答案 7 :(得分:1)

获取没有任何循环(或任何其他长度数字)的10位数字

private static readonly Random _rdm = new Random();
private string PinGenerator(int digits)
{
   if (digits <= 1) return "";

   var _min = (int)Math.Pow(10, digits - 1);
   var _max = (int)Math.Pow(10, digits) - 1;
   return _rdm.Next(_min, _max).ToString();
}

此函数计算第n位数的下限和上限。

要生成10位数字,请使用如下:

PinGenerator(10)

答案 8 :(得分:1)

我想出了这个方法,因为我不想使用Random方法:

public static string generate_Digits(int length)
{
    var rndDigits = new System.Text.StringBuilder().Insert(0, "0123456789", length).ToString().ToCharArray();
    return string.Join("", rndDigits.OrderBy(o => Guid.NewGuid()).Take(length));
}

希望这会有所帮助。

答案 9 :(得分:1)

我试着写一个快速的:

private int GetNDigitsRandomNumber(int digits)
{
    var min = 1;
    for (int i = 0; i < digits-1; i++)
    {
          min *= 10;
    }
    var max = min * 10;

    return _rnd.Next(min, max);
}

答案 10 :(得分:0)

Random random = new Random();
string randomNumber = string.Join(string.Empty, Enumerable.Range(0, 10).Select(number => random.Next(0, 9).ToString()));

答案 11 :(得分:0)

这是使用格式字符串的简单解决方案:

string r = $"{random.Next(100000):00000}{random.Next(100000):00000}";

随机的10位数字(可能带有前导零)是两个5位随机数字的并集。格式字符串“ 00000”表示如果数字短于5位数字(例如1将被格式化为“ 00001”),则将附加前导零。

有关“ 0”自定义格式说明符的更多信息,请参见documentation

答案 12 :(得分:-3)

在C#中生成一个随机的10位数字

Random RndNum = new Random();   

int RnNum = RndNum.Next(1000000000,9999999999);