0

4 桁の乱数を生成し、テキスト ボックスに何かのシリアル番号として入力したいと考えています。どうすればそれを行うことができますか?

4

8 に答える 8

3

重複しないようにしたい場合は、次を使用しますGuid

Guid guid = Guid.NewGuid();  // however a Guid is not a 4 digit integer

乱数が必要な場合は、次を使用しますRandom

Random rnd = new Random();
int randomInt = rnd.Next(1000, 10000)

ただし、ランダム インスタンスは現在の時刻でシードされるため、ループ内で作成しないでください。そうしないと、繰り返し値が得られます。したがって、ランダム インスタンスをパラメーターとしてこのメ​​ソッドに渡すか、フィールド/プロパティを使用するか、外部で作成されたループで同じインスタンスを使用します。

一意の乱数を取得する最も簡単な方法は、新しい数が存在する場合は作成することです。

于 2013-07-23T15:26:43.600 に答える
2
List<int> used = new List<int>();
Random random = new Random();

foreach(thing you want to do)
{
    int current = random.Next(1000, 9999);

    while(used.Contains(current))
        current = random.Next(1000, 9999);

    //do something

    used.Add(current);
}

またはあなたのニーズを満たすためにこれに似たバリエーション

于 2013-07-23T15:29:39.643 に答える
0

Random クラスは、乱数を作成するために使用されます。(もちろん疑似ランダムです。)

例:

Random rnd = new Random();
int num = rnd.Next(1000, 10000); //creates number from 1000 to 9999

ストア生成番号に HashSet を使用し、重複をチェックできます

于 2013-07-23T15:29:16.967 に答える
0

これを行う最も簡単な方法は、可能なすべての選択肢のリストを順番に生成し、シャッフルすることです。次に、リストをシャッフルした後、リストを「順番に」通過すると、シーケンスはランダムになり、繰り返されなくなります。

List<int> numbers = new List<int>(Enumerable<int>.Range(0,10000);

HelperFunctions.Shuffle(numbers); //There are plenty of examples of how to shuffle the list on this site.

foreach(var number in numbers)
{
    Console.WriteLine(number.ToString("D4"); //Displays random numbers from 0000 to 9999 but never repeats
}
于 2013-07-23T15:29:37.803 に答える
0

このような:

var random = new Random();

var numbers = new List<int>(0);

for (var i = 0; i < 4; i++)
{
    var number = random.Next(1000, 10000);

    if (numbers.Contains(number))
    {
        i--;
        continue;
    }

    numbers.Add(number);
}

tbx1.Text = numbers[0].ToString();
tbx2.Text = numbers[1].ToString();
tbx3.Text = numbers[2].ToString();
tbx4.Text = numbers[3].ToString();
于 2013-07-23T15:29:49.040 に答える
0

これにより、4 桁の乱数が得られます。

Random random= new Random();   

int RnNum = random.Next(1000,9999);

重複しないようにしたい場合は、生成されたランダム値をセッションに保存し、既に生成されている場合は比較します。もちろん、他の方法もあります。セッションの方法でやりたくない場合は、テキスト ファイルなどに書き込みます。

于 2013-07-23T15:30:00.927 に答える
0

Dictionary または Hashset で生成された数値を記録しておく必要があります。お気に入り

 HashSet<int> generatedValues = new HashSet<int>();
 Random rnd = new Random();
 int randomInt = rnd.Next(1000,9999);
 while(generatedValues.Contains(randomInt))
 {
    randomInt = rnd.Next(1000,9999);
 }
  generatedValues.Add(randomint);
于 2013-07-23T15:30:29.720 に答える