In einem PC läuft alles immer sehr geordnet, ein echter Zufall ist nicht möglich, es ist eher eine Simulation. Vereinfacht dargestellt: Du hast einen Seed (Anfangswert) und der wird immer nach einem Algorithmus durchgemischt - wenn dieser Seed aber bekannt ist, lassen sich die Zufallswerte errechnen.

Das ist vor allem in der Kryptographie ein Problem, da es Angriffvektoren schafft, deswegen lohnt es sich mal nach Zufall+Kryptographie zu googlen.

Ein genereller Ansatz ist es, diesen Algorithmus mit Entropie anzureichern. Diese wird aus externen Quellen erzeugt, z.B. Mausbewegungen, Tastatureingaben, Temperaturen und sonstigen, was sich algorithmisch nicht vorhersehen lässt. Mit dem Wissen über dieses Vorgehen ist der Zufall trotzdem angreifbar (aber ungleich schwerer).

In der Quantenmechanik sollte es meines Wissens möglich sein echten Zufall zu erreichen - aber abgesehen davon, dass du wahrscheinlich keinen Quantenrechner im Wohnzimmer stehen hast, ist mein Wissen bei der Thematik eher auf Halb-Wissen beschränkt.

...zur Antwort

Programmiersprachen "lernt" man nicht im eigentlichen Sinne. Man lernt Paradigmen und das Wissen verschiedene Probleme in ein Programm umzusetzen. Im Falle von C# ist das Paradigma im Wesentlichen die Objektorientierte Programmierung.

Die Idee dahinter ist recht fix erklärt: man hat verschiedene Objekte mit Attributen und Methoden, die sich gegenseitig beeinflussen. Dieses Konzept kann aber beliebig komplexer werden.

Nehmen wir als Beispiel das Spiel Pacman: Es gibt Objekte auf dem Spielfeld, dass kann ein Geist sein, eine Pille oder der Spieler selbst. Das Spielfeld selber ist auch ein Objekt, was all diese Objekte darstellt. Das Spielfeld selber weiß aber recht wenig von den Objekten, seine Aufgabe ist nur die Objekte darzustellen - dazu sollte jedes Objekt verschiedene Basismethoden bereitstellen wie Position oder die Grafik, die gerendert wird. Da spricht man Vererbung oder Schnittstellen (je wie man das Problem angeht, wahrscheinlich Mix aus beiden). Dann gibt es noch das Spiel-Objekt, was alle Spielfeld-Objekte + das Spielfeld verwaltet und Punkte zählt und dem Spielfeld sagt wann gerendert werden muss etc. pp.

Das ist jetzt ein sehr abstraktes, vereinfachtes, konstruiertes Beispiel - stellt aber hoffentlich die Idee etwas dar. Wie gesagt: Die Grundidee ist schnell verstanden, das komplett und all umfänglich zu verinnerlichen Bedarf aber reichlich Erfahrung (falls man das überhaupt jemals erreicht, ich würde das nicht von mir behaupten).

Zum lernen: Du brauchst natürlich Wissen um die Syntax der wesentlichen Sprachkonstrukte. Wenn man bei Null anfängt würde ich bei deinen Ambitionen davon ausgehen, dass du nach einer Woche 80% der wesentlichen Konstrukte zumindest kennst (Syntax, Bedingungen, Schleifen, Datentypen, Klassen, Funktionen/Methoden, Exceptions, Generics) - gemäß der 80-20-Regel. Wann was anzuwenden ist wirst du dann auch ziemlich schnell begreifen.
Was dann noch dazukommt sind die Bibliotheken. Es sollte offensichtlich sein, das du keine Low-Level-Funktionen benutzen musst, um ein ein einzelnes Pixel auf dem Bildschirm darzustellen oder eine Datei bis zur Festplatte zu bringen. Ein HelloWorld ist halt ein 1-Zeiler (wenn man die Boilerplate, also den Standardcode drumherum, weglässt). Aber du kannst auch etwas größer denken und aus einer Struktur eine XML erstellen ohne dich darum kümmern zu müssen wie die XML aussieht.
Dazwischen gibt es noch die "Standards"...Listen, Dictionaries, Arrays, ... Die wirst du immer wieder finden und brauchen. Auch hier gilt die 80-20-Regel, diesmal andersherum: Dir werden 20% der Standardbibliotheken reichen um 80% deiner Zeile zu erreichen (wobei ich in Betracht der Größe, je wie man die Standarbibliothek definiert, eher auf 95-5 tippen würde).

Wie kommst man auf die Bibliotheksfunktionen? Kommt auf die eigene Erfahrung an. Wenn wenig da ist: Tutorials, da wird man in das wesentliche eingeführt. Später hilft google massiv, am besten auf Englisch - stackoverflow ist eine geniale Community, man kann daraus wortwörtlich ganze Programme zusammenkopieren (wenn man weiß, was man kopieren muss). Wenn deine Erfahrung sogar das übertrifft oder deine Probleme sehr speziell sind, hilft eine Dokumentation meist weiter.

Letztendlich ist mein Rat aber: Nicht lernen - MACHEN! Lese/schaue Tutorials (und versuche sie nachzuvollziehen), denk dir Probleme aus/frag Bekannte nach Problemen und versuche sie umzusetzen. Programmieren ist vor allem Erfahrung (und Kreativität).
Das ist keine Fremdsprache wie italienisch, wo du Vokabeln lernen musst und einen Italiener brauchst der dir dann nur sagt, dass das irgendwie falsch klingt. Du hast einen Compiler, der dir jederzeit sagt, was ihm nicht passt. Wenn es für den Compiler passt das Ergebnis trotzdem unerwartet ist, hast du zumindest direktes Feedback. Es gibt (ins besonders in der Visual Studio Welt) wundervolle Möglichkeiten Fehler auszuspüren (aber das würde jetzt den Rahmen sprengen)

Sammel einfach Erfahrung, das bringt dir mehr als jedes Lehrbuch. Ich würde nicht sagen, dass du nach 2 Wochen ein 3D Game zustande bringst...aber ein primitiver Snake-Clone auf der Konsole? Da bin ich bei deiner Motivation optimitisch.

...zur Antwort

Ich nehme an, du nutzt Windows. Da gibt es leider kein Unicode in der Konsole. Stattdessen wird eine Codepage verwendet (im deutschen Raum üblicherweise CP850).

\u2251 wäre da z.B. \xBA

Für mehr Details Google nach deiner Codepage durchsuchen (die aktive Codepage lässt sich übrigens im cmd mit 'chcp' auslesen).

Problem hier ist: Es funktioniert dann nur auf PCs mit der gleichen Codepage sicher. Es gibt in der Win-API eine Funktion um die Codepage (fix gegooglet, die sieht vielversprechend aus: https://msdn.microsoft.com/en-us/library/windows/desktop/ms686036%28v=vs.85%29.aspx) zu ändern, falls du auf anderen Rechnern sicher sein willst.

Wenn du sicher gehen willst: Die ersten 127 Zeichen vom ASCII Code sind immer garantiert.

...zur Antwort

http://www.netlimiter.com/

Ist eigentlich dazu da einzelnen Programmen Traffic zu entziehen (damit z.B. ein Download das Spiel nicht stört) - aber man kann es bestimmt auch breitgefächerter nutzen.

Ansonsten wie du bereits angesprochen hast: Traffic verbrennen. Z.B. einen Torrent laden. Oder was mir aufgefallen ist: Videos auf homerj.de schauen - solange die preloaden, spackt mein komplettes Internet ab (gibt sicher andere Plattformen wo das auch funktioniert - aber das ist die, wo es mir allerdings immer wieder auffällt). Uploads auf Maxspeed funktionieren auch sehr gut, da leidet die Downloadgeschwindigkeit extrem (lässt sich auch mit Torrents bewerkstelligen - ACHTUNG: legale Torrents, wenn du illegale Sachen runterlädst ist es eine Urheberrechtsverletzung [was auch unangenehme Folgen haben kann] - wenn du illegale Sachen hochlädst ist es eine Straftat)

Wenn du uns verraten würdest was du erreichen willst, könnten wir dir sicher besser helfen.

...zur Antwort

Mir fallen spontan 2 Möglichkeiten ein (je nach Anwendungsfall). Sind beide zwar nur C-Lösungen aber die gehen auch und bei Bedarf gibt es sicher auch eine C++ Lösung.

Wie liest du das Ergebnis ein? mit getch() oder mit cin?

Bei getch() (wenn du also nur ein einzelnes Zeichen einlesen willst) wäre die einfachste Lösung zu überprüfen ob der Wert zwischen '0' und '9' liegt. Also:

char x = getch();
int wert;
if  (x < '0' || x > '9') {
    // Fehler
}
else {
    wert = x-'0';
}

(keine Garantie für Syntaxfehler, es geht hier um die Idee)

Falls du einen kompletten string parsen willst nimm strtol(), sscanf() oder irgendwas was von der STL (adhoc keine Idee was es da gibt, aber da gibt es garantiert was) und überprüfe die Rückgabewerte.

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.