我正在使用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;
}
答案 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);