C#中唯一的4位随机数

时间:2015-11-17 05:05:25

标签: c# random

我想生成一个唯一的4位数随机数。这是我尝试过的以下代码:

生成随机数的代码

//Generate RandomNo
public int GenerateRandomNo()
{
    int _min = 0000;
    int _max = 9999;
    Random _rdm = new Random();
    return _rdm.Next(_min, _max);
}

问题是我收到的值为241的随机数不是4位数字。代码有什么问题吗?

13 个答案:

答案 0 :(得分:38)

//Generate RandomNo
public int GenerateRandomNo()
{
    int _min = 1000;
    int _max = 9999;
    Random _rdm = new Random();
    return _rdm.Next(_min, _max);
}

你需要一个4位数的代码,以1000开头

答案 1 :(得分:17)

请改用此代码:

private Random _random = new Random();

public string GenerateRandomNo()
{
    return _random.Next(0, 9999).ToString("D4");
}

答案 2 :(得分:7)

241是一个四位数字,如果你使用前导零:0241。

使用如下格式字符串显示返回的数字:

String.Format("{0:0000}", n);

答案 3 :(得分:5)

0与0000相同。

241与0241相同。

您可以将整数格式化为前导零的字符串。

答案 4 :(得分:4)

只需一行代码

int num = new Random().Next(1000, 9999);

答案 5 :(得分:2)

使用:int _min = 1000;

如果你想要0241

,请使用前导0

答案 6 :(得分:2)

Random generator = new Random();
string number = generator.Next(1, 10000).ToString("D4");

答案 7 :(得分:0)

你可以考虑这样的事情。

int length = 4;
int number = 50;
string asString = number.ToString("D" + length);

上面的代码给出了结果0050。

同样,您可以尝试转换为字符串并验证。

答案 8 :(得分:0)

我建议创建新列表并检查此列表是否包含任何数字

[1] FALSE

答案 9 :(得分:0)

int NoDigits = 4;
Random rnd = new Random();
textBox2.Text = rnd.Next((int)Math.Pow(10, (NoDigits - 1)), (int)Math.Pow(10, NoDigits) -1).ToString();

答案 10 :(得分:0)

将答案从brij扩展到0000到9999,而不是1000到9999

string formatting = "0000"; //Will pad out to four digits if under 1000   
int _min = 0;
int _max = 9999;
Random randomNumber = new Random();
var randomNumberString = randomNumber.Next(_min, _max).ToString(formatting);

或者如果您要最小化行数:

Random randomNumber = new Random();
var randomNumberString = randomNumber.Next(0, 9999).ToString("0000");

答案 11 :(得分:0)

使用它,您将避免以 00[...] 开头的数字,您还可以指定长度。

string RandomNumbers(int Length)
{
    Random Rand = new Random();
    StringBuilder SB = new StringBuilder();
    for (int i = 0; i < Length; i++)
        SB.Append(Rand.Next(0, 9));

    return SB.ToString();
}

RandomNumbers(4) // OUTPUT: 9301, 4936, 0692, etc ...

答案 12 :(得分:0)

这是生成任何数字的方法。如果包含重复数字,内部循环将重新生成数字,因此随机数将仅由唯一数字组成。

using System.Linq;

public static int GenerateRandomNum()
    {
        // Number of digits for random number to generate
        int randomDigits = 4;
        
        int _max = (int)Math.Pow(10, randomDigits);
        Random _rdm = new Random();
        int _out = _rdm.Next(0, _max);

        while (randomDigits != _out.ToString().ToArray().Distinct().Count())
        {
            _out = _rdm.Next(0, _max);
        }
        return _out;
    }