私のプログラムは次のことを行う必要があります。
a. 0 から 9 までの 20 個のランダムな整数の配列を生成します。数値 7 が最初に出現する場合はそれを検索し、配列内のその位置を報告します。
b. 部分 a の計算を 1000 回繰り返し、配列内の各位置について、配列内で最初に出現する 7 がその位置にある回数を報告します。
ただし、プログラムを実行するたびに、次のような奇妙な結果が得られます (毎回異なります)。
- どの位置にもセブンが見つかりません
- 1 つの位置で 1000 の 7 が見つかり、他の場所では 7 は見つかりませんでした
- 2 つの位置で数百の 7 が見つかりましたが、他の場所では見つかりませんでした。
私のプログラムの何が問題なのか、誰にも分かりますか?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Week_6_Project_2
{
class Program
{
static int intArrayLength = 20;
static int[] resultsArray = new int[intArrayLength];
public static Array generateRandomArray() {
int[] randomNumberArray = new int[intArrayLength];
Random random = new Random();
int popcounter = 0;
while (popcounter < intArrayLength) {
randomNumberArray[popcounter] = random.Next(0, 10);
popcounter += 1;
}
return randomNumberArray;
}
public static void searchForSevens()
{
int counter = 0;
int[] randomArray = (int[])generateRandomArray();
while (counter < intArrayLength)
{
if (randomArray[counter] == 7)
{
resultsArray[counter] += 1;
counter = intArrayLength;
}
counter += 1;
}
}
static void Main()
{
int searchCounter = 0;
while (searchCounter < 1000)
{
searchForSevens();
searchCounter += 1;
}
int displayCounter = 0;
while (displayCounter < intArrayLength)
{
Console.WriteLine("Number of first occurrence of 7 at position {0} = {1}", displayCounter, resultsArray[displayCounter]);
displayCounter += 1;
}
Console.ReadLine();
}
}
}