Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: Die Artikel ::  Zufälle gibt's?! - Funktionen rund um rand, Random und den Zufall  
Gehen Sie zu Seite Zurück  1, 2, 3
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
MFK
Mitglied

Benutzerprofil
Anmeldungsdatum: 02.11.2002
Beiträge: 5928
Beitrag MFK Mitglied 14:20:45 03.09.2007   Titel:              Zitieren

Indem du z.B. ein Ergebnis-Array mit den gewünschten Verteilungen erstellst und die ermittelte Zufallszahl als Index auf dieses Array benutzt.

Wenn du nichtganzzahlige Verteilungen willst, musst du rechnen.

_________________
"Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung.
weg
Unregistrierter




Beitrag weg Unregistrierter 18:34:54 18.09.2009   Titel:              Zitieren

leider gibts den link
http://www.ma.utexas.edu/documentation/nr/bookcpdf/
nicht mehr
Contor
Unregistrierter




Beitrag Contor Unregistrierter 20:42:39 07.12.2009   Titel:              Zitieren

kennt jemand die lineare kongruenz? kann mir jemand was dazu sagen ?
komme da nicht weiter !!!
Michael E.
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5774
Beitrag Michael E. Mitglied 16:48:35 11.12.2009   Titel:              Zitieren

Hast du eine konkrete Frage?

Der allgemeine Aufbau eines linearen Kongruenzgenerators wird in einem anderen Artikel erläutert.

_________________
Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
Zitro
Unregistrierter




Beitrag Zitro Unregistrierter 09:49:47 06.01.2017   Titel:   Re: Zufälle gibt's?! - Funktionen rund um rand, Random und den Zufall            Zitieren

Marc++us schrieb:

C++:
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
int main()
{
   for (unsigned u = 0; u <= RAND_MAX; u++)
   {
      cout << u << "\t" << u % 3 << endl;
   }
   return 0;
}


Am Anfang geht's noch sauber los:

Code:
0   0
1   1
2   2
3   0
...


aber am Ende ist ein kleines Problem vorhanden:

Code:
32762   2
32763   0
32764   1
32765   2
32766   0
32767   1


Es geht nicht auf! Der größtmögliche Wert 32767 – der Zufallszahlengenerator schneidet wegen &0xffff alles darüber ab – wird durch das Modulo 3 auf 1 gesetzt. Sie können sich das wie das Ablegen von Kugeln vorstellen, man legt immer reihum in die drei Töpfe; zählt man am Ende die Kugeln in den drei Töpfen 0, 1 und 2, so liegt diese Anzahl von Kugeln pro Topf vor:

Code:
Topf 0:   10923   33,33435%
Topf 1:   10923   33,33435%
Topf 2:   10922   33,33130%



Problem gelöst...
Bei den Modulo-Rechnungen mit nicht 2er Potenzen einfach in der for den Maximalwert - in dem Fall RAND_MAX - mit dem selben Modulo berechnen und addieren:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
using namespace std;
 
int main()
{
   for (unsigned u = 0; u <= RAND_MAX + (RAND_MAX % 3); u++) // <-
   {
      cout << u << "\t" << u % 3 << endl;
   }
   cin>>ende;
   return 0;
}


Oder RAND_MAX mit dem selben Modulo berechnen, +1 und dann subtrahieren:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
using namespace std;
 
int main()
{
   for (unsigned u = 0; u <= RAND_MAX - ((RAND_MAX % 3)+1); u++) // <-
   {
      cout << u << "\t" << u % 3 << endl;
   }
   return 0;
}


Damit sind alle "Töpfe" gleich voll und man schließt eine ungleiche "Prozentuale Zieh-Chance" aus.

Jedoch wird die häufigkeit der wiederholung damit beeinflusst.

Ergibt das überhaupt Sinn? :confused:


MfG
C++ Newbe, Zitro
SG1
Mitglied

Benutzerprofil
Anmeldungsdatum: 19.03.2001
Beiträge: 3073
Beitrag SG1 Mitglied 10:06:33 06.01.2017   Titel:   Re: Zufälle gibt's?! - Funktionen rund um rand, Random und den Zufall            Zitieren

Zitro schrieb:
Ergibt das überhaupt Sinn? :confused:
Nein. RAND_MAX kannst Du nicht ändern.
C++ Forum :: Die Artikel ::  Zufälle gibt's?! - Funktionen rund um rand, Random und den Zufall  
Gehen Sie zu Seite Zurück  1, 2, 3
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.