Podmínka ukončení generování náhodných čísel – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Podmínka ukončení generování náhodných čísel – Java – Fórum – Programujte.comPodmínka ukončení generování náhodných čísel – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Radek
~ Anonymní uživatel
121 příspěvků
23. 11. 2012   #1
-
0
-

Zdravím, poraďte mi prosím jak napsat podmínku (nejspíše bych to viděl pomocí cyklu while), aby se zastavilo generování posloupnosti náhodných čísel (které běží podle určitého algoritmu) v momentě, kdy se vygeneruje číslo, které se již vygenerovalo dříve. Jinak řečeno, vygenerování shodného čísla, které je již obsaženo v posloupnosti = konec generace.

Díky :)

Nahlásit jako SPAM
IP: 83.208.149.–
Reklama
Reklama
sleepy0
Stálý člen
23. 11. 2012   #2
-
0
-

Bud budes za kazdym prechadzat cele pole, a kontrolovat zhodu, ak je zhoda brakens vnutorny cyklus a nastavis nejaky boolean na false ktory riadi vonkajsi cyklus.

List<Double> numbers
boolean generateNexy = true;
do{
	// vygenerujes cislo x
	for(int i=0; i<numers.size(); i++){
		if(numbers.get(i).doubleValue()==x){
			generateNext = false;
		}
		else{
			numbers.add(new Double(x)); // to iste sa da robit s polom
			// ale treba zabezpecit aby si v nom mal dost miesta
		}
	}
}while(generateNext);

Tak isto sa to da pomocou casto krat spominaneho setu. Ak najdes podobny element v sete ukoncis generovanie.

Alebo ak mas maly pocet cisel ktore budes generovat napr. 1..30, tak sa to da aj pomocou algoritmu, ktory bol spomenuty v rieseni sudoku. Budes jednoducho si uchovavat p a while pojde do tial pokial (v & p) ==0. Vid kontrola jednoho bloku sudoku.

Nahlásit jako SPAM
IP: 158.195.195.–
Radek
~ Anonymní uživatel
121 příspěvků
25. 11. 2012   #3
-
0
-

Díky za odpověď :-) Nedá se to ještě obejít nějakým jednoduchým algoritmem? S Javou začínám a z tohohle nejsem zrovna 2x chytrej :D

Nahlásit jako SPAM
IP: 83.208.149.–
sakal910
Stálý člen
25. 11. 2012   #4
-
0
-

#3 Radek
 

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Main {

    public static List generate() {
        // vytvoříme nový seznam
        List list = new ArrayList();
        // třída pro generování čísel
        Random random = new Random();
        // číslo (budeme ukládat vygenerované číslo)
        int cislo;
        // první číslo přidáme do seznamu (sezanam je zatím prázdný, netřeba nic kontrolovat)
        list.add(random.nextInt(15));
        // nekonečný cyklus pro generování
        do {
            // vygenerujem si číslo v intervalu (0,15), pokud chceš změnit interval tak změň číslo :)
            cislo = random.nextInt(15);
            // projdeme všechny prvky v seznamu
            for (Object x : list) {
                // pokud je číslo už v seznamu, ukončíme metodu a vratíme seznam
                if (x == cislo) {
                    return list;
                }
            }

            // pokud číslo v seznamu není, vložíme ho tam a opakujem cyklus :)
            list.add(cislo);
        } while (true);
    }

    public static void main(String[] args) {
        List list = generate(); // vygenerujem seznam

        // vytisknem seznam :)
        for (Object integer : list) {
            System.out.print(integer + ", ");
        }
    }
}
Nahlásit jako SPAM
IP: 31.222.8.–
sakal910
Stálý člen
25. 11. 2012   #5
-
0
-

#3 Radek
Snad to z toho nějak pochopíš :D kdybys na tom něco nechápal tak napiš, rád ti to vysvětlím :)

Nahlásit jako SPAM
IP: 31.222.8.–
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, 27 hostů

Moderátoři diskuze

 

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