乱数をC≧//.ネット🎲


ある種の確率または非決定性の振舞いをシミュレートする必要があるかもしれないとき、コーディングしている時があります.通常、それを行う最も簡単な方法は乱数を使用しています.
幸いにも、私たち人間のために、Cのけんかは、乱数を近似するのは非常に簡単な方法があります.あなたがしなければならないすべてはRandom クラスから.擬似乱数を生成するNET Framework
using System;

namespace GeneratingRandomNumbers
{
    class Program
    {
        static void Main(string[] args)
        {
            Random random = new Random();

            Console.WriteLine(random.Next(1, 10));
            Console.ReadKey(true);
        }
    }
}
上記のコードは新しいRandom あなたのための番号ジェネレータ、および呼び出しNext 関数は、パラメータとして提供する最小値と最大値の間の擬似乱数を返します.
しかし、上記のコードには実際にいくつかの問題があります.それらについて話しましょう.
まず第一に、あなたは擬似ランダムとしてこれらの“ランダム”番号を参照し続けることに気づいたかもしれません.これはrandom.Next メソッドは本当に完全にランダムではありません.簡単に言えばRandom クラスは、数字がランダムであるように見える複雑なアルゴリズムを使用します.
によると.NET documentation , アルゴリズムは、時間ベースの種子を取ります.つまり、複数のRandom オブジェクトは同時に、彼らはすべての数字の同じシーケンスを生成します.実際にこれをテストするには、次のようにします.
Random random = new Random();
Random anotherRandom = new Random();

for (int i = 0; i < 10; i++)
{
    Console.WriteLine(random.Next(1, 10) + ", " + anotherRandom.Next(1, 10));
}

Console.ReadKey(true);
私たちが一見乱数の同じ系列を再現したいかもしれないいくつかの例があります.しかし、ほとんどの場合、常に異なるシーケンスを生成したいと思います.これがそうであることを保証する良い方法Random オブジェクト静的で、常に同じオブジェクトからすべての乱数を得ます.
このようにしたいと思います.
using System;

namespace GeneratingRandomNumbers
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(RandomNumbers.GetRandom(1, 10));
            Console.ReadKey(true);
        }
    }

    static class RandomNumbers
    {
        private static Random random = new Random();

        public static int GetRandom(int min, int max)
        {
            return random.Next(min, max + 1);
        }
    }
}
我々は1つだけ使用しているのでRandom オブジェクトは、我々のアプリケーションでは、番号のシーケンスを繰り返す必要はありません(少なくとも少なくとも統計的に非常に低いチャンスが起こっている).
あなたが通知する1つの最後のことは、それを呼び出すときNext メソッドGetRandom , 私は増加maxValue パラメータrandom.Next(min, max + 1) . これはminValue 関数がとる引数はmaxValue 引数は排他的です.したがって、私たちが提供した最大値を返す関数のために、パラメータに1を加えなければなりません.
それを指摘する最後の一つはRandom クラスは、最も実用的な理由で十分です.暗号化された強いランダムシーケンスを生成する場合は、おそらくRandomNumberGenerator class . このクラスによって生成されたシーケンスは、予測できません.
今、あなたは行くことができる何かランダムを行う!読書ありがとう!
カバー写真Unsplash ❤️