Stránka 1 z 1

Java - naplneni pole čísly

Napsal: 29 dub 2011 13:18
od GarGy
potřeobal bych poradit , nevím si rady jak přes random naplnit pole cisly , pricemz vzdy 2 budou stejna (pexeso)

Re: Java - naplneni pole čísly

Napsal: 29 dub 2011 17:20
od faraon
Je to sice v Céčku (protože Javu neumím), ale syntaxe vypadá dost podobně, takže bys ty smyčky měl bez problémů rozluštit:

Kód: Vybrat vše

/*** zamíchání karet pro pexeso ***/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

/* zadává se pouze počet dvojic! */
#define POCET_DVOJIC 16
#define POCET_KARET POCET_DVOJIC*2

int main(void)
    {
    int balicek[POCET_KARET],karta,pocet,i,j;

    /*** míchání karet ***/
    srand(time(NULL));
    for (i=0;i<POCET_KARET;++i)
        {
        do {
           /* vylosování karty */
           karta=rand() % POCET_DVOJIC;
           /* kontrola kolikrát už ve zpracované části balíčku je */
           pocet=0;
           for (j=0;j<=i;++j)
               if (karta==balicek[j])
                  ++pocet;
           } while (pocet>=2);
           /* losování se opakuje dokud není počet menší než 2 */
        balicek[i]=karta;
        }

    /*** výpis balíčku ***/
    for (i=0;i<POCET_KARET;++i)
        {
        printf("%d\t%d\n",i,balicek[i]);
        }

    return 0;
    }


srand() - nastavení seedu aby sekvence nebyla pokaždé stejná
rand() - generování náhodného čísla
balíček - pořadí 0 až 31
karty - 0 až 15

To opakované losování karty není úplně optimální, protože ke konci balíčku může trvat dost dlouho. Ale protože těch karet je jen pár desítek, tak se to dá skousnout, horší by bylo kdyby jich byl milion... Můžeš zkusit vymyslet jak to udělat lépe ;-)

Re: Java - naplneni pole čísly

Napsal: 29 dub 2011 20:31
od CZechBoY
v C# 4.0 bych dal to prohledavani pres Parallel.ForEach nebo jednoduse pres Array.IndexOf - ten si s tim uz nejak poradi ;-)