-2

テストの目的で、通常、コード内ですべてランダムまたは一意の文字列の巨大な配列を作成する必要があります。C#でこれを行う簡単な方法はありますか...手動で一連の文字列をインスタンス化する代わりに。これを、初期化された単純なプロパティを持つカスタム クラスの配列としても使用できれば、それは素晴らしいことです。

編集:私はこれをやってみました:

string myItems[] = { "ONE", "TWO" , "THREE" etc..}

For( loop through 100 )
{
    Use GetRandomFileName()
}
4

2 に答える 2

2

GUID を使用できます

これがそのコードです。C#.NETで

string id = System.Guid.NewGuid().ToString();
                Console.WriteLine(id);

何百ものそれらが必要な場合は、ループを使用してください。

int i=0;
List<string> id = null;
while(i<100)
{ 
    id.add(System.Guid.NewGuid().ToString());
    i++;
}

それが役に立てば幸い。

于 2013-03-30T15:03:46.757 に答える
1

はい、できますが、主に特定の要件に基づいています。

ランダムな文字列

以下は、特定lengthの a ~ z 文字の文字列 (97 ~ 122) のASCII コードcharを生成し、それらを文字列に追加する前に s に変換することによって、文字列を作成する関数の例です。

public string BuildRandomString(Random random, int length)
{
    var random = new Random();
    string text = string.Empty;

    for (int i = 0; i < length; i++)
        text += (char)random.Next(97, 122);

    return text;
}

100のリスト

これを使用して、List次のように 100 個のランダムな文字列を生成できます。

var random = new Random();
var strings = new List<string>();

for (int i = 0; i < 100; i++)
    strings.Add(BuildRandomString(random, 10));

さまざまな長さ

これをさらに拡張して、次のようなさまざまな長さの文字列を取得できます。

public string BuildRandomString(Random random, int minLength, int maxLength)
{
    var text = string.Empty;
    var length = random.Next(minLength, maxLength);

    for (int i = 0; i < length; i++)
        text += (char)random.Next(97, 122);

    return text;
}

さらなる拡張

このメソッドは、好きなものを与えるように拡張できます。改善の例として、生成された各文字列に少なくとも 1 つの母音があることを確認して、より単語のように見えるようにすることができます。

要件に基づいてより理想的な結果を得るためにメソッドを拡張する場合、ASCII テーブルは便利です

System.Random

Randomオブジェクトがインスタンス化され、メソッドへの引数として渡されていることに気付くでしょう。BuildRandomString()「疑似乱数」がどのように機能するかという理由で、単に新しいものをインスタンス化することはできません。それらは、最初の数、2 番目の数などを決定する「シード」を取ります。たとえば、同じ「ランダム」データで複数回作業したい場合は、シードを明示的に指定できるため、これには利点がありますnew Random(102302)

シードを使用しない場合、システム クロックに基づいてシードを生成するデフォルトのコンストラクタが使用されます。問題は、この数値が連続して使用されると同じシードを返すため、同じ変数を使用する必要があることです。メソッドを含むクラスのメンバー変数にすることも簡単BuildRandomStringです。

MSDN から:

デフォルトのシード値はシステム クロックから派生し、有限の分解能を持ちます。その結果、既定のコンストラクターの呼び出しによって連続して作成されるさまざまな Random オブジェクトは、同じ既定のシード値を持つため、同じ乱数のセットが生成されます。この問題は、単一の Random オブジェクトを使用してすべての乱数を生成することで回避できます。

それを指摘してくれたdialerに感謝します。

于 2013-03-30T15:02:06.397 に答える