Witam, zrobiłem program, który losuje 6 liczb bez powtórzeń i wyświetla je w TextBoxach:
Random random = new Random();
int[] selectedNumbers = new int[6];
private void LosujButton_Click(object sender, EventArgs e)
{
for (int numberCount = 0; numberCount < selectedNumbers.Length; numberCount++)
{
int newNumber = random.Next(1, 50);
for (int i = 0; i < numberCount; i++)
{
if (newNumber == selectedNumbers[i])
{
MessageBox.Show("Znalazłem duplikat liczby (" + newNumber + ")");
newNumber = random.Next(1, 50);
MessageBox.Show("Wymieniłem duplikat na: " + newNumber);
continue;
}
}
selectedNumbers[numberCount] = newNumber;
}
int[] tablicaNumerów = new int[6];
for (int x = 0; x < tablicaNumerów.Length; x++)
{
tablicaNumerów[x] = selectedNumbers[x];
}
Array.Sort(tablicaNumerów);
textBox1.Text = tablicaNumerów[0].ToString();
textBox2.Text = tablicaNumerów[1].ToString();
textBox3.Text = tablicaNumerów[2].ToString();
textBox4.Text = tablicaNumerów[3].ToString();
textBox5.Text = tablicaNumerów[4].ToString();
textBox6.Text = tablicaNumerów[5].ToString();
I nie wiem jak go przerobić, żeby przeprowadzał 1000 losowań naszych 6 liczb i wyświetlał np. w labelu ile trafiliśmy trójek, czwórek, piątek i szóstek, tj. jak w następującym przykładzie z C++:
static void Main(string[] args)
{
int[] liczba;
liczba = new int[6];
string dane;
int q;
q = 0;
int szesc, piec, cztery, trzy;
szesc = 0;
piec = 0;
cztery = 0;
trzy = 0;
/* DANE */
for (int j = 0; j <= 5; ++j)
{
q++;
jeszcze:
// wpisujemy liczbe z przedzialu od 1 do 49
Console.WriteLine("Podaj " + q + " liczbe w przedziale od 1 do 49: ");
dane = Console.ReadLine();
liczba[j] = int.Parse(dane);
// sprawdzamy czy zakres sie zgadza
if (liczba[j] < 1 || liczba[j] > 49)
{
Console.WriteLine("\nZle dane. Nacisnij dowolny przycisk.");
goto jeszcze;
}
if (j > 0)
{ // sprawdzamy czy aby nie wpisalismy 2 razy tej samej liczby
for (int k = 0; k < j; ++k)
{
if (liczba[k] == liczba[j])
{
Console.WriteLine("\nOups! Liczba juz byla ziomus.");
goto jeszcze;
}
}
}
}
/* ------------- */
Console.WriteLine("No to czas na zgadywanie przez kompa:");
Console.WriteLine("3...");
System.Threading.Thread.Sleep(500);
Console.WriteLine("2...");
System.Threading.Thread.Sleep(500);
Console.WriteLine("1...");
System.Threading.Thread.Sleep(500);
Console.WriteLine("...S T A R T...");
System.Threading.Thread.Sleep(100);
int[] liczbaZgadywana;
liczbaZgadywana = new int[6];
Random rnd = new Random();
for (int z = 0; z < 1000; ++z)
{
int tmp;
tmp = 0;
/* LOSOWANIE BEZ POWTARZANIA*/
for (int i = 0; i <= 5; ++i)
{
los:
liczbaZgadywana[i] = rnd.Next(1, 50);
if (i > 0)
{
for (int k = 0; k < i; ++k)
{
if (liczbaZgadywana[k] == liczbaZgadywana[i])
{
goto los;
}
}
}
// wyswietlamy wylosowane 6 cyfr
if (i == 0)
{
Console.WriteLine("\n");
}
Console.Write(liczbaZgadywana[i] + " ");
// sprawdzamy ile bylo trafionych
for (int j = 0; j <= 5; j++)
{
if (liczba[j] == liczbaZgadywana[i])
{
tmp++;
if (tmp == 3)
trzy++;
if (tmp == 4)
cztery++;
if (tmp == 5)
piec++;
if (tmp == 6)
szesc++;
}
}
}
}
Console.WriteLine("\n\nNa 1000 losowan padlo: \n" + "szostki: " + szesc + " \npiatki: " + piec + "\nczworki: " + cztery + "\ntrojki: " + trzy);
Console.ReadLine();
return;
}
}
}