如何生成随机字符串,并指定所需的长度,或者更好地生成所需的规范上的唯一字符串

时间:2011-01-06 15:43:03

标签: c# string random

11 个答案:

答案 0 :(得分:41)

答案 1 :(得分:16)

答案 2 :(得分:4)

答案 3 :(得分:2)

答案 4 :(得分:1)

怎么样

string.Join("", Enumerable.Repeat(0, 100).Select(n => (char)new Random().Next(127))));

var rand = new Random(); string.Join("", Enumerable.Repeat(0, 100).Select(n => (char)rand.Next(127))));

答案 5 :(得分:0)

答案 6 :(得分:0)

这样的事情怎么样...

static string GetRandomString(int lenOfTheNewStr)
{
    string output = string.Empty;
    while (true)
    {
        output = output + Path.GetRandomFileName().Replace(".", string.Empty);    
        if (output.Length > lenOfTheNewStr)
        {
            output = output.Substring(0, lenOfTheNewStr);
            break;
        }
    }
    return output;
}

输出

static void Main(string[] args)
{            
    for (int x = 0; x < 10; x++)
    {
        string output = GetRandomString(20);
        Console.WriteLine(output);
    }
    Console.ReadKey();
}

r323afsluywgozfpvne4
qpfumdh3pmskleiavi3x
nq40h0uki2o0ptljxtpr
n4o0rzwcz5pdvfhmiwey
sihfvt1pvofgxfs3etxg
z3iagj5nqm4j1f5iwemg
m2kbffbyqrjs1ad15kcn
cckd1wvebdzcce0fpnru
n3tvq0qphfkunek0220d
ufh2noeccbwyfrtkwi02

在线演示:https://dotnetfiddle.net/PVgf0k


参考
https://www.dotnetperls.com/random-string

答案 7 :(得分:0)

使用串联GUID的随机字符串

此方法使用最少数量的串联GUID返回所需数目的字符的随机字符串。

    /// <summary>
    /// Uses concatenated then SubStringed GUIDs to get a random string of the
    /// desired length. Relies on the randomness of the GUID generation algorithm.
    /// </summary>
    /// <param name="stringLength">Length of string to return</param>
    /// <returns>Random string of <paramref name="stringLength"/> characters</returns>
    internal static string GetRandomString(int stringLength)
    {
        StringBuilder sb = new StringBuilder();
        int numGuidsToConcat = (((stringLength - 1) / 32) + 1);
        for(int i = 1; i <= numGuidsToConcat; i++)
        {
            sb.Append(Guid.NewGuid().ToString("N"));
        }

        return sb.ToString(0, stringLength);
    }

示例输出长度为8:

39877037
2f1461d8
152ece65
79778fc6
76f426d8
73a27a0d
8efd1210
4bc5b0d2
7b1aa10e
3a7a5b3a
77676839
abffa3c9
37fdbeb1
45736489

示例输出的长度为40(请注意重复的'4'-在v4 GUID中,您是一个十六进制数字,将始终为4(有效地删除了4位)-通过删除以下内容可以改进算法:考虑到返回的字符串长度可以小于GUID的长度(32个字符),请使用'4'来改善随机性:

e5af105b73924c3590e99d2820e3ae7a3086d0e3
e03542e1b0a44138a49965b1ee434e3efe8d063d
c182cecb5f5b4b85a255a397de1c8615a6d6eef5
676548dc532a4c96acbe01292f260a52abdc4703
43d6735ef36841cd9085e56f496ece7c87c8beb9
f537d7702b22418d8ee6476dcd5f4ff3b3547f11
93749400bd494bfab187ac0a662baaa2771ce39d
335ce3c0f742434a904bd4bcad53fc3c8783a9f9
f2dd06d176634c5b9d7083962e68d3277cb2a060
4c89143715d34742b5f1b7047e8107fd28781b39
2f060d86f7244ae8b3b419a6e659a84135ec2bf8
54d5477a78194600af55c376c2b0c8f55ded2ab6
746acb308acf46ca88303dfbf38c831da39dc66e
bdc98417074047a79636e567e4de60aa19e89710
a114d8883d58451da03dfff75796f73711821b02

C#提琴手演示:https://dotnetfiddle.net/Y1j6Dw

答案 8 :(得分:0)

这里是上述答案的一些修改。

  private static string GetFixedLengthStrinng(int len)
    {
        const string possibleAllChars = "ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz0123456789!@#$%^&*()_+{}:',.?/";
        StringBuilder sb = new StringBuilder();
        Random randomNumber = new Random();
        for (int i = 0; i < len; i++)
        {
            sb.Append(possibleAllChars[randomNumber.Next(0, possibleAllChars.Length)]);
        }
        return sb.ToString();
    }

答案 9 :(得分:0)

有时候,在单元测试之类的过程中,随机字符串会很有用,如果是我,我会添加AutoFixture nuget软件包,然后执行类似的操作。 在我的示例中,我需要一个121字符串...

        var fixture = new Fixture();
        var chars = fixture.CreateMany<char>(121).ToArray();
        var myString = new string(chars);

如果这不是在单元测试中,那么我将为自己创建一个nuget包并在其中使用Autofixture,或者如果我仅需要某些字符类型,则使用其他方法。

答案 10 :(得分:0)

public  static String getAlphaNumericString(int n) {

        String AlphaNumericString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "0123456789" + "abcdefghijklmnopqrstuvxyz";

        StringBuilder sb = new StringBuilder(n);

        for (int i = 0; i < n; i++) {

            // generate a random number between
            // 0 to AlphaNumericString variable length
            int index = (int) (AlphaNumericString.length() * Math.random());

            // add Character one by one in end of sb
            sb.append(AlphaNumericString.charAt(index));
        }

        return sb.toString();
    }