![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Senior Member
![]() Registriert seit: 18.12.2001
Beiträge: 190
|
![]() Ich bräuchte in C einen Würfelzufallsgenerator der mir bei jedem Aufruf der Funktion eine neue 4er Kette von Zufälligen Zahlen bringt die zwischen 1 und 6 liegen. Also praktisch wie bei einem Würfel. Meine bisherigen bemühungen mit random() %7 brachten leider immer die gleichen Zahlen zum Vorschein.
|
![]() |
![]() |
![]() |
#2 |
Elite
![]() |
![]() du musst den seed setzen.
schau dir srandom(int seed); an wenn du den seed auf die systemzeit stellst, hast du jedesmal eine andere kette.
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees. |
![]() |
![]() |
![]() |
#3 |
Senior Member
![]() Registriert seit: 18.12.2001
Beiträge: 190
|
![]() Das funktioniert ja alles sehr gut nur hab ich das Zeug in einer Funktion stehen und die Funktion führ ich einfach 4 mal durch eine Schleife aus. Jetzt hab ich zwar eine Zufallszahl aber 4x die gleiche. Es sollten aber 4 völlig unterschiedliche zwischen 1 und 6 Befindliche sein.
Meine Zufallsgeneratorfunktion sieht jetzt so aus: Code:
srandom( time(0) ); rate=rand() % 7; return rate; Code:
for (x=0; x<4; x++) rate[x] = zufallsgenerator(); |
![]() |
![]() |
![]() |
#4 |
Master
![]() Registriert seit: 12.01.2002
Beiträge: 640
|
![]() folgendes, du musst "srand(7);" am anfang der funktion schreiben dann sollts gehn
|
![]() |
![]() |
![]() |
#5 |
Master
![]() Registriert seit: 12.01.2002
Beiträge: 640
|
![]() hab noch was gefunden und glei scanned
*edit: hoppla des mit dem anhängen von dateien funktioniert woll nicht!* |
![]() |
![]() |
![]() |
#6 |
Master
![]() Registriert seit: 12.01.2002
Beiträge: 640
|
![]() noch ein versuch
*edit: es hat geklappt!!* |
![]() |
![]() |
![]() |
#7 |
Elite
![]() |
![]() dein problem ist folgendes:
da die schleife innerhalb kürzester zeit ausgeführt wird, ändert sich time net. dadurch setzt du innerhalb der funktion den seed (== ungefähr sowas wie der startpunkt der randomfunktion) merksatz: seed einmal setzen, dann kriegt man mit rand() zufallszahlen.
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees. |
![]() |
![]() |
![]() |
#8 |
Senior Member
![]() Registriert seit: 18.12.2001
Beiträge: 190
|
![]() Jetzt hab ichs so gemacht, dass ich srand(time(0)); einfach in die main Funktion gegeben hab noch vor des Schleifenaufrufs mit der Zufallsfunktion. Jetzt funktionieren das generieren der Zufallszahlen so wie es sollte nur sind ab und zu immer 0en drin was nicht sein sollte. Ich wollte rand() % 0+7 setzen aber das geht mit der 0 anscheinend nicht.
Jemand eine Lösung hierfür? |
![]() |
![]() |
![]() |
#9 | |
Master
![]() Registriert seit: 12.01.2002
Beiträge: 640
|
![]() Zitat:
|
|
![]() |
![]() |
![]() |
#10 | |
Elite
![]() |
![]() Zitat:
rand()%6 + 1 = {1,2,3,4,5,6} @Dane rand()%1 ergibt immer 0 rand()%1 + 7 => immer 7
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees. |
|
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|