it-swarm.com.ru

Как создать случайное 10-значное число в C #?

Я использую 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;
    }
18
Hriskesh Ashokan

Если вам нужны десять цифр, но вы разрешаете начиная с 0 , то звучит так, будто вы хотите сгенерировать строку, а не длинное целое число.

Создайте 10-символьную строку, в которой каждый символ случайным образом выбирается из '0' .. '9'.

5
Ray Toal

попробуйте (хотя и не совсем точно)

Random R = new Random();

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

Используйте это для создания случайных цифр любой указанной длины 

 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;
    }
8
A Ghazal
private void button1_Click(object sender, EventArgs e)
{
   Random Rand = new Random();
   long randnum2 = (long)(Rand.NextDouble() * 9000000000) + 1000000000;
   MessageBox.Show(randnum2.ToString());
}
3
DrWeather

(1000000000,9999999999) не является случайным - вы обязуетесь, что он не может начинаться с 1, поэтому вы уже сократили свою целевую базу на 10%. 

Случайный - это двойное число, поэтому, если вы хотите получить целое число, умножьте его на 1 000 000 000, а затем отбросьте цифры после запятой. 

3
Unsliced
   //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); 
        }
    }
1
Ravi Ganesan

Чтобы получить 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)

1
Menelaos Vergis

Я попытался написать быстрый:

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);
}
1
HamedH

Я придумал этот метод, потому что я не хочу использовать метод 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));
}

надеюсь это поможет.

1
Chtiwi Malek
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;
}
1
mohghaderi
Random random = new Random();
string randomNumber = string.Join(string.Empty, Enumerable.Range(0, 10).Select(number => random.Next(0, 9).ToString()));
0
Oleg