プログラムに少し問題があります。
プログラムで次のようなクラスを作成しました。
class ClassA
{
public int number = -1;
public Random rnd = new Random();
public void randomize()
{
var random = rnd;
number = rnd.next(4)+2;
}
}
私はこのように作成したクラスを含む各配列を作成して配列しようとしていました。配列を新しいメソッドに転送して、確認できるようにします。
public static void Main()
{
ClassA[,] arrayOfClass = new Class[6,6];
ClassA classA= new Class();
int i, j;
for (i = 0; i < 6; i++)
{
for (j = 0; j < 6; j++)
{
classA.randomize();
arrayOfClass[i, j] = classA;
}
}
CheckClassA(arrayOfClass);
}
private void CheckClassA(ClassA[,] arrayOfClass)
{
int i,j;
for(i=0;i<6;i++)
{
for (j = 0; j < 6; j++)
{
Console.Writeline("Randoming : "+arrayOfClass[i,j].number);
{
}
}
これらを実行すると、コンソールは同じ数を何度も生成しますが、実行ごとに異なります.1回だけランダム化してから、再度ランダム化することはありません.
私の質問は次のとおりです。1.なぜ私のプログラムは一度だけランダム化して、配列のすべての値に対して同じ数を返すのですか? 2. 配列を転送する方法は間違っていますか?
以下の他のタイプを使用して、ランダム化が失敗したかどうかを確認しようとしましたが、期待どおりに乱数を返すため、そうではありませんでした。
public static void Main()
{
ClassA[,] arrayOfClass = new Class[6,6];
ClassA class= new Class();
int i, j;
for (i = 0; i < 6; i++)
{
for (j = 0; j < 6; j++)
{
class.randomize();
arrayOfClass[i, j] = class;
Console.Writeline("Randoming : " + arrayOfClass[i,j].number);
}
}
}
どんな提案や助けも感謝します。ありがとう