Ukončení náhody – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ukončení náhody – .NET – Fórum – Programujte.comUkončení náhody – .NET – Fórum – Programujte.com

 

Thanoss0
Duch
31. 5. 2020   #1
-
0
-

Ahoj

Předem děkuji za pomoc.

Mám program, kde chci vygenerovat 6 čísel, které se nesmí rovnat mnou zadaným a sobě samým v rozmezí 1-13. 

V případě, že mnou zadaná čísla jsou 1,2,3,4,5,6,7,8,9,10 tak vlastně zbývají čísla 1,2,3 a program stále generuje náhodu a vlastně nikdy proces neukončí zkoušel jsem Try a Catch, ale vlastně program žádnou chybu nevyhodí, protože stále hledá výsledek a zbývající tři čísla. Jak mám udělat to, že pozná, že nemůže nic najít, nebo ať tomu dá např. 1000 pokusů a pak zastaví činnost a bude čekat nové zadání vstupních čísel?

Předem děkuji za odpověď

Nahlásit jako SPAM
IP: 188.175.196.–
KIIV
~ Moderátor
+43
God of flame
31. 5. 2020   #2
-
0
-

Udelej seznam vsech cisel, odeber z nej tebou zadane a pak uz staci generovat nahodnou pozici v listu a pokazde ji pak odebrat. Skonci, pokud je list prazdny, nebo mas pozadovany pocet cisel.

Nahlásit jako SPAM
IP: 78.80.17.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Thanoss0
Duch
31. 5. 2020   #3
-
0
-

#2 KIIV
Děkuji za odpověď, ale co když zadám jiné rozmezí apod a problém se bude znovu opakovat. 

Potřebuji spíš radu jak zabránit nekonečnému generovaní čehokoliv, když vlastně nikdy vzorec nebude moci najít řešení, protože žádné není. Potřeboval bych odpověď na dotaz ,,Jak ukončit náhodné generovaní např. po 1000 pokusech a vyhodit MessageBox.Show ("Generování není možné");. Děkuji

Nahlásit jako SPAM
IP: 188.175.196.–
KIIV
~ Moderátor
+43
God of flame
31. 5. 2020   #4
-
0
-

#3 Thanoss
seznam muzes vygenerovat podle zadaneho rozmezi (urcite sem nemel na mysli zadat ho natvrdo).

Ale vzdy to muzes omezit na proste pocty. Kolik je moznosti, kolik je moznosti bez odebranych a tim to jednoduse omezit. Stejne musis mit nekde seznam cisel, ktere uz jsou vyrazene. A tohle je jedno z tech casove efektivnich reseni, nez nahodne strileni a pak pokazde prochazet seznamy, jestli to jde nebo nejde pouzit. To nahodne strileni taky muze trvat docela dlouho

Nahlásit jako SPAM
IP: 78.80.17.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Thanoss0
Duch
31. 5. 2020   #5
-
0
-

#4 KIIV

Toto je kod jak zadám, kolikrát to má zkusit a pak přestat?
while (NahodneCislo6 == NahodneCislo5 || NahodneCislo6 == NahodneCislo4 || NahodneCislo6 == NahodneCislo3 || NahodneCislo6 == NahodneCislo2 || NahodneCislo6 == NahodneCislo1 || NahodneCislo6 == ITB11 || NahodneCislo6 == ITB12 || NahodneCislo6 == ITB13 || NahodneCislo6 == ITB14 || NahodneCislo6 == ITB15 || NahodneCislo6 == ITB16 || NahodneCislo6 == ITB21 || NahodneCislo6 == ITB22 || NahodneCislo6 == ITB23 || NahodneCislo6 == ITB24 || NahodneCislo6 == ITB25 || NahodneCislo6 == ITB26 || NahodneCislo6 == ITBDC1 || NahodneCislo6 == ITBDC2)
            {
                NahodneCislo6 = náhoda.Next(1, 13 + 1);
            }

Nahlásit jako SPAM
IP: 188.175.196.–
KIIV
~ Moderátor
+43
God of flame
31. 5. 2020   #6
-
0
-

#5 Thanoss
Seznam... ne hromada porovnavani ruznejch promennejch.

using System;
using System.Linq;
					
public class Program
{
	public static void Main()
	{
		var rand = new Random();
		var list = Enumerable.Range(1,13).ToList(); // vygenerujeme seznam cisel: 1 .. 13
		
		foreach (int num in Enumerable.Range(1,60)) // zkusime vybrakovat 60 cisel, ikdyz je tam jen 13
		{
			if (list.Count() == 0) break;
			
			int pos = rand.Next(0, list.Count());
			Console.Write(pos);
			Console.Write(" - ");
			Console.WriteLine(list[pos]);
			
			list.RemoveAt(pos);
		}
	}
}
Nahlásit jako SPAM
IP: 78.80.17.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 5 hostů

Podobná vlákna

Ukončení threadu — založil Jenda

Ukončení smyčky while — založil Pedro

Automatické ukončení — založil Miška

Ukončení hry — založil Petrr

 

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