NEopakování náhodných čísel – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

NEopakování náhodných čísel – .NET – Fórum – Programujte.comNEopakování náhodných čísel – .NET – Fórum – Programujte.com

 

blabalal
~ Anonymní uživatel
17 příspěvků
13. 12. 2012   #1
-
0
-

Ahoj,

potřebuji pomoc, už si nevím rady :X

mám pole čísel, které chci mezi s sebou promíchat, ale nevím, jak zabránit opakování čísel.

            Random rand = new Random();
            int nahoda;
            int[] cisla = new int[] { 1, 2, 3, 4, 5 };

            for (int i = 0; i < cisla.Length; i++)
            {    
                nahoda = rand.Next(1, 6);
                cisla[i] = nahoda;
                Console.Write(cisla[i] + " ");
            }

            Console.ReadLine();
Nahlásit jako SPAM
IP: 85.132.184.–
Vaizo0
Stálý člen
13. 12. 2012   #2
-
0
-

Třeba takhle:

var nahodneProhozenaCisla = cisla.OrderBy(x => Guid.NewGuid());
Nahlásit jako SPAM
IP: 213.194.218.–
blabalal
~ Anonymní uživatel
17 příspěvků
13. 12. 2012   #3
-
0
-

wau... tak teď vůbec nevím co co dělá... Poradíš aspoň jak to vypsat třeba do console?

Nahlásit jako SPAM
IP: 85.132.184.–
ingiraxo+15
Grafoman
13. 12. 2012   #4
-
0
-

 Opravený řešení... osobně nemám rád žrouta paměti Linq :)

Random rnd = new Random();
int[] nums = new int[] { 1, 2, 3, 4, 5 };

for (int i = 0; i < nums.Length; i++)
{
    int gen = rnd.Next(0, nums.Length);
    int tmp = nums[i];
    nums[i] = nums[gen];
    nums[gen] = tmp;
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
blabalal
~ Anonymní uživatel
17 příspěvků
13. 12. 2012   #5
-
0
-

díky ti :)

Nahlásit jako SPAM
IP: 85.132.184.–
blabalal
~ Anonymní uživatel
17 příspěvků
13. 12. 2012   #6
-
0
-

no ale, když to spouštím a nechám to vypisovat tak to moc dobře nefunguje :( vypíše to třeba 1 3 2 1 3 a místo tý posdní dvojice tam má být třeba 5 4 :/

Nahlásit jako SPAM
IP: 85.132.184.–
ingiraxo+15
Grafoman
13. 12. 2012   #7
-
0
-

#6 blabalal
no tak delas neco spatne :)

EDIT: pokud náhodou vypisujes cisla primo v cyklu do konzole jeste (tak jak to mas v tve prvni ukazce), tak to nemuzes

EDIT 2: jinak cela ukazka jak bych to udelal treba ja 



    internal class App
    {
        private static readonly Random rnd = new Random();

        static void Shuffle<T>(ref T[] array)
        {
            for (int i = 0; i < array.Length; i++)
            {
                int gen = rnd.Next(0, array.Length);
                T tmp = array[i];
                array[i] = array[gen];
                array[gen] = tmp;
            }
        }

        static void ReadArray<T>(T[] array)
        {
            foreach (T v in array)
            {
                Console.Write(v + " ");
            }
        }

        static void Main(string[] args)
        {
            int[] nums = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

            Shuffle(ref nums);
            ReadArray(nums);

            Console.ReadKey();
        }
    }
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
blabalal
~ Anonymní uživatel
17 příspěvků
13. 12. 2012   #8
-
0
-

no kódu rozumim, jen nechápu proč to tak nefunguje? to dělá ta metoda Shuffle?

Nahlásit jako SPAM
IP: 85.132.184.–
ingiraxo+15
Grafoman
13. 12. 2012   #9
-
0
-

jj jinak kod je v poradku, pokud ti neco nefunguje tak delas neco spatne ty.. sem dej celej kod jak to mas a co ti kde nejde a uvidime

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
blabalal
~ Anonymní uživatel
17 příspěvků
13. 12. 2012   #10
-
0
-

už mi to funguje, díky moc :) jenom si něco musím ještě přečíst k tomu shufflu :D ještě jednou díky ;)

Nahlásit jako SPAM
IP: 85.132.184.–
P
~ Anonymní uživatel
212 příspěvků
14. 12. 2012   #11
-
0
-

#10 blabalal
Neco k tomu shufflu si muzes precist zde: http://en.wikipedia.org/wiki/Shuffle!

Nahlásit jako SPAM
IP: 85.93.116.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 34 hostů

Podobná vlákna

Generator nahodnych cisel — založil silent

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý