4 桁の乱数を生成し、テキスト ボックスに何かのシリアル番号として入力したいと考えています。どうすればそれを行うことができますか?
8 に答える
重複しないようにしたい場合は、次を使用します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)
ただし、ランダム インスタンスは現在の時刻でシードされるため、ループ内で作成しないでください。そうしないと、繰り返し値が得られます。したがって、ランダム インスタンスをパラメーターとしてこのメソッドに渡すか、フィールド/プロパティを使用するか、外部で作成されたループで同じインスタンスを使用します。
一意の乱数を取得する最も簡単な方法は、新しい数が存在する場合は作成することです。
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);
}
またはあなたのニーズを満たすためにこれに似たバリエーション
Random クラスは、乱数を作成するために使用されます。(もちろん疑似ランダムです。)
例:
Random rnd = new Random();
int num = rnd.Next(1000, 10000); //creates number from 1000 to 9999
ストア生成番号に HashSet を使用し、重複をチェックできます
これを行う最も簡単な方法は、可能なすべての選択肢のリストを順番に生成し、シャッフルすることです。次に、リストをシャッフルした後、リストを「順番に」通過すると、シーケンスはランダムになり、繰り返されなくなります。
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
}
    このような:
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();
    これにより、4 桁の乱数が得られます。
Random random= new Random();   
int RnNum = random.Next(1000,9999);
重複しないようにしたい場合は、生成されたランダム値をセッションに保存し、既に生成されている場合は比較します。もちろん、他の方法もあります。セッションの方法でやりたくない場合は、テキスト ファイルなどに書き込みます。
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);