Zahlenbereiche abbilden auf andere Zahlenbereiche
-
Danke.
Habs mal durchgespielt.
Ja mit Z mod Q geht es.
Natürlich ist die Wirkung des Zuff-Gen verändert,
da eben die generierte Zahl nicht unbedingt der endgültigen
entspricht, aber das nehme ich in Kauf, da der Zuff-Gen
funktioniert bis einschl. Q = Z(max) wegen der
linearen Zuordnung und danach (Q = Z(max)+1) eben nicht mehr.Ich sehe auch keine andere Lösung,
da z. B. mein Zuff-Gen als z. B. Einstellige Zahl, die immer
0 - 9 ist, liefert und einer der nötigen Zielbereiche 1 - 6 ist.Gut man könnte ihn wiederholen bis er 1 - 6 ausspuckt, aber
das will ich nicht.
-
Generier doch einfach den größtmöglichen Bereich (den Wertebereich deines Ausgabetyps). Damit fallen die Unterschiede nicht mehr ins Gewicht.
Mit deiner Zuordnung kann nicht mehr von Zufall gesprochen werden, da die Wahrscheinlichkeit für 1-3 doppelt so hoch ist wie die für 4-6. Die Wirkung ist nicht nur verändert, sie ist hinüber.
-
Das wäre theor. möglich, aber:
Mein Ausgabetyp ist int.
Wenn ich nun einen Wert bis int(max) generiere würde das
wahrscheinlich die sinnvolle Funktionalität meines
Zufallsgenerators übersteigen, da dieser "echte" Zufallswerte
nur im 1 bis 3 -stelligen Bereich liefert, also allerhöchtens bis 999.
Darauf ist er ausgelegt.Möglichkeit:
Na denn muss ich eben Q = zweistellig wählen (evtl. begrenzen)
und dann umverteilen oder so.Aber wie gesagt, dass der Generator kaputt ist durch die Abbildung
sehe ich nicht so. außerdem könnte man ja q noch beeinflussen
im vorwege
wenn q > z dann q z. B. +1 oder so.
Möglicherweise spielt das Übergewicht bei Z von 1 bis 3 sogar in die Hände.Außerdem ist ja nicht nur Z 1-6 gefragt.
Wie auch immer, wenn es andere Lösungen gibt, immer her damit.
wichtig ist nur, dass mein Zuff-Gen erhalten bleibt.
-
Jetzt muss mir nur noch jemand erklären, warum die zuerst vorgeschlagenen Algorithmen nicht funktionieren und man das alles so kompliziert machen muss
-
iceborg01 schrieb:
[...] da dieser [Zufallsgenerator] "echte" Zufallswerte
nur im 1 bis 3 -stelligen Bereich liefert, also allerhöchtens bis 999.Darf den von dir Implementierten Zufallsgenerator aus bloßer Neugier 'mal sehen?
Greetz, Swordfish
-
@ Michael: weil ich vorhin schon schrieb, dass die anderen Algos nicht
linear sind und für z. B. q = 2 z = 3 liefern u. ä.@ Swordfish: Ich kann und will meinen Zuff-Gen noch nicht herausgeben.
(Später gerne)
Er ist nocht nicht implementiert, sondern existiert bisher
nur auf dem Papier.
Was viel wichtiger als später das implementieren ist:
Er ist in umfangreichen Kalk-Tabellen
durchgespielt worden, um zu sehen, ob er Sinn macht.Ich sag mal soviel: Er basiert auf timer und rand/srand
und im weiteren Rechenverlauf auf sqrt und den Winkelfunkt.
eines bel. Dreiecks, wenn p,q,h bekannt sind und man in Richtung
einiger Teile von alpha,beta,gamma rechnet.Da ich gerade mit c++ erst anfange und für dieses Hobby nur wenig zeit habe,
wirds wohl noch dauern.
-
Also wenn du mit Winkelfunktionen rumspielst, dann sollte das Teil dann aber auch double zurückliefern. Ich bezweifle doch stark, dass du damit Ganzzahlen herausbekommst. Dann erübrigt sich der Modulo-Unsinn, da Modulo für Fließkommazahlen nicht definiert ist.
-
Ja das ist richtig.
Die winkel werden wohl double werden, aber das sind
ja nicht die endgültigen Zahlen, sondern nur Teile davon,
die dann letztenendes int sein können.**
So ich muss mich jetzt vorerst verabschieden.
Wie gesagt, für dieses Hobby bleibt leider nur wenig zeit.
Bis hoffentlich zum nächsten mal.**
-
Swordfish schrieb:
Du musst denken beim Programmieren.
Also die Aussage lob ich mir doch mal...
Vllt. sollte es im 'Info-Thread' des C++-SubFoums heißen:
[...]Bevor ihr ein neues Thema startet, benutzt bitte die Suchfunktion, werft einen Blick in die FAQs und denkt!.
Das scheinen einige zu vergessen
.
-
iceborg01 schrieb:
@ Michael: weil ich vorhin schon schrieb, dass die anderen Algos nicht
linear sind und für z. B. q = 2 z = 3 liefern u. ä.Und?