Ответ 1
Если вы хотите десять цифр, но вы можете начинать с 0, то это звучит так, как будто вы хотите сгенерировать строку, а не длинное целое.
Создайте 10-значную строку, в которой каждый символ случайным образом выбран из '0'.. '9'.
Я использую С#, и мне нужно создать случайное 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;
}
Если вы хотите десять цифр, но вы можете начинать с 0, то это звучит так, как будто вы хотите сгенерировать строку, а не длинное целое.
Создайте 10-значную строку, в которой каждый символ случайным образом выбран из '0'.. '9'.
попробуйте (хотя и не совсем точно)
Random R = new Random();
return ((long)R.Next (0, 100000 ) * (long)R.Next (0, 100000 )).ToString ().PadLeft (10, '0');
Используйте это для создания случайных цифр с заданной длиной
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;
}
(10000000009999999999) не является случайным - вы утверждаете, что он не может начинаться с 1, поэтому вы уже сократили свою целевую базу на 10%.
Случайный - это двойной, поэтому, если вы хотите целое число, умножьте его на 1,000,000,000, затем опустите цифры после десятичной точки.
private void button1_Click(object sender, EventArgs e)
{
Random rand = new Random();
long randnum2 = (long)(rand.NextDouble() * 9000000000) + 1000000000;
MessageBox.Show(randnum2.ToString());
}
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;
}
//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);
}
}
Чтобы получить 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)
Я попытался написать быстрый:
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);
}
Random random = new Random();
string randomNumber = string.Join(string.Empty, Enumerable.Range(0, 10).Select(number => random.Next(0, 9).ToString()));
Я придумал этот метод, потому что я не хочу использовать метод 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));
}
надеюсь, что это поможет.
Чтобы создать случайное 10-значное число в С#
Random RndNum = new Random();
int RnNum = RndNum.Next(1000000000,9999999999);