Zufallsprinzip in C++ ?
-
Spieleprogrammierer ist halt ein Troll
-
So, jetzt hab ich mich auch mal registriert.
danke für die vielen Antworten. Werde gleich mal ausprobieren, ob das alles funtzt.Ps: Ich wollte bald mal ein Proggy schreiben, dass mir das Fußballergebniss voraussagt. (Ich bin Fußballverrückt
) Besser gesagt, ich will, dass der PC ein zufälliges Ergebniss liefert, aber ich vorher das beeinflussen kann. Das z.B. der Verein x 70% Chancen auf den Sieg hat und y nur 30% Und die heimmanschaft hat immer einen Vorteil von 5% usw. danach liefert der mir 10 unterschiedliche Ergebnisse aus und der Durschnitt ergibt dann das wirkliche Ergebniss. (ich weiß, ich weiß, ihr haltet mich vielleicht für -piep-, aber ich bin nunmal verrückt
)
-
Ach so... das ist aber einfach.
Du mußt den Zufallszahlengenerator einfach noch gewichten.
Normal liefert rand Zahlen von 0 bis 32767 (ist eine Kontante RAND_MAX oder so ähnlich).
Nun mußt Du einfach soundsoviel Prozent davon als A werten und den Rest als B:
A soll zu 70% gewinnen, B zu 30%:
bool a_gewinnt; if (rand() < ((double)RAND_MAX * 0.70)) a_gewinnt = true; else a_gewinnt = false;
Extra leicht verständlich gehalten... wenn also die von rand() gelieferte Zahl im Bereich 0.. bis in den unteren 70% der möglichen Zahlen liefert, dann gewinnt a. Also mit einer Wahrscheinlichkeit von 70%.
-
Original erstellt von DasPinsch:
Spieleprogrammierer ist halt ein TrollNein, du, ich sage lediglich das, was bei meinem BCB3 geschehen ist, und bei mir kommen nur unterschiedliche zahlen, wenn srand in der schleife ist. Ist bei mir srand außerhalb der schleife, kommen nur im Sekundentakt andere Zahlen. Dafür kann ich auch nichts. Und dass ich ein "troll" sein soll, sehe ich als Beleidigung, da es genug themen gibt, in denen das vin DIR geschrieben wurde.
PS: Du bist ein troll, nicht ich.
-
Das Programm hat garantiert keine Laufzeit von über einer Sekunde, also ist deine Aussage Schwachsinn. Wenn du meinst, dass du das Programm mehrmals pro Sekunde startest, und dann nur im Sekundentakt andere Startwerte kommen, hast du vollkommen Recht. Das hättest du aber dazusagen müssen anstatt dich hier in Diskussionen zu stürzen die du nicht verstehst.
PS: Offensichtlich verstehst du nichtmal, warum man dich Troll nennt. Weißt du überhaupt was das ist?
-
kann man diesen spieleprogrammierer nicht irgendwie abstellen? wie kann man immer wieder mit so einer ueberheblichkeit so einen unsinn reden?
das mit dem fussball auszulosen ist ja nun wirklich quark. mit einem versuch nur aus spass an der freud mag ja noch sinn machen, aber 10mal und dann mitteln, das versucht schon wissenschaftlich zu sein, dann kannst du aber gleich den erwartungswert deiner aufgestellten trivialen verteilung berechnen, den du ja schon kennst, sonst haettest du die zahlen nicht so aufgestellt.
-
@SP sicher dass du das nicht ausversehen vertauscht hast??
:p
Also als ich das einmal inner schleife hadde, hatt mich der kompiler mit Fehlern dichtgemüllt. Es passierte jedenfalls nur Murks.Außerdem:
time(NULL) liefert nur im Sekundentakt einen neuen wert. Fragst du bei 1.0s ab meinetwegen 100 bei 1.2s immernoch und auch bei 1.4s! Was darüber passiert: ka ob die Funktion rundet oder sonstwas, aber ich denke nicht.
Ist rand() aber einmal initialisiert, dann wird es egal wann du fragst immer andere werte ausspucken, da es dann unabhängig von der Zeit läuft.Du musst dich irgendwo "vercoded" haben *g*
PS: Na nu regt euch doch ab, er kann ja auchnix für seinen BCB _____
PPS: Nein, Ich mag den BCB net! ;P
[ Dieser Beitrag wurde am 26.06.2003 um 16:59 Uhr von THE_FreaK editiert. ]
-
wenn srand() in der schleife unterschiedliche werte initialisiert liefert dein tein nicht sekunden sondern Ticks... und das ist imho nicht so.
-
tein==time
ich bin was besoffen...
-
Original erstellt von Bashar:
**Das Programm hat garantiert keine Laufzeit von über einer Sekunde, also ist deine Aussage Schwachsinn. Wenn du meinst, dass du das Programm mehrmals pro Sekunde startest, und dann nur im Sekundentakt andere Startwerte kommen, hast du vollkommen Recht. Das hättest du aber dazusagen müssen anstatt dich hier in Diskussionen zu stürzen die du nicht verstehst.PS: Offensichtlich verstehst du nichtmal, warum man dich Troll nennt. Weißt du überhaupt was das ist?**
Hab ich gesagt,dass ich genaudas selbe kompiliert habe? Nzr das Prinzip war bei meinem genauso, ansonstenlief mein kompiliertes Programm, um ganz genau zu sein, unendlich lang, denn da war es eine while(true) -Schleife.
-
und
sleep(1000);
damit du die zahl lesen kanst :OÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞ