Losowanie znakow w tablicy

0

Witam, mam problem. Chce napisać program mieszający litery w wyrazie, jednak zawsze powtarza się jedna litera. Jak rozwiązac ten problem ?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 4 ;
            char[] wyraz = { 'w', 'y', 'r', 'a', 'z' };
            char[] pomieszany;
            pomieszany = new char[5];

            Random losowa = new Random();

            for(int i=0;i<5;i++)
            {
                int r = losowa.Next(5);
                pomieszany[i] = wyraz[r];
                wyraz[r] = wyraz[n];
                n--;
                Console.Write(pomieszany[i]);
            }

            Console.ReadKey();
        }
    }
}
2

Jeżeli chcesz przelecieć przez całą tablicę to używaj takiego zapisu

char characters[] = { ... } // Przykładowa tablica zawierająca X znaków
for(int i = 0; i < characters.Length; i++) // characters.Length zwraca rozmiar tablicy 

Twój algorytm jest błędny. Tutaj przykład algorytmu Fisher-Yates

Random random = new Random();

for (int i = characters.Length; i > 1; i--)
{
    int index = random.Next(characters.Length);
    char tmp = characters[index];
    characters[index] = characters[i - 1];
    characters[i - 1] = tmp;
}
// Gdzie characters to tablica char

1 użytkowników online, w tym zalogowanych: 0, gości: 1