[Gelöst]Zufallszahlen sortieren /Macro geht nicht
Moderator: Moderatoren
Re: [erstmal Gelöst]Zufallszahlen sortieren /Macro geht nicht
Mikeleb der Code is ja super das problem was ich habe ist nur das er scheinbar nur zahlen von 1 bis 5 macht weil habe keine 6 in der liste.
Ob das sofort Sortieren dem Spielleiter gefällt kläre ich ab.
änder ich bei rnd *5* in 6 um macht er mir zahlen zwischen 1 und 6
aber bei 2 würfeln macht er mir zahlen zwischen 2 und 13 hmm ich doctor später da nochmal selber rum aber danke erstmal .
versuche mal die nächste Lösung
Ob das sofort Sortieren dem Spielleiter gefällt kläre ich ab.
änder ich bei rnd *5* in 6 um macht er mir zahlen zwischen 1 und 6
aber bei 2 würfeln macht er mir zahlen zwischen 2 und 13 hmm ich doctor später da nochmal selber rum aber danke erstmal .
versuche mal die nächste Lösung
Re: [erstmal Gelöst]Zufallszahlen sortieren /Macro geht nicht
Hallo Leute,
um eine Zufällige Zahl innerhalb eines bestimmten Bereiches zu ziehen, gehe ich wie folgt vor.
Erstmal ein Pseudo-Code
Um jetzt eine Zahl vom Würfel zu ziehen, würde das dann so aussehen.
Zur Info.
Das hier
ist nicht gut. Da in diesem Falle auch eine 0 (Null) gewürfelt wird, aber die 6 nicht fällt (man kann auch sagen, das die 6 entfällt).
Mehr habe ich momentan nicht zu bieten.
Gruß
balu
um eine Zufällige Zahl innerhalb eines bestimmten Bereiches zu ziehen, gehe ich wie folgt vor.
Erstmal ein Pseudo-Code
Code: Alles auswählen
Cint(rnd()*(GrößteZahl-KleinsteZahl) +KleinsteZahl)
Code: Alles auswählen
Cint(rnd()*(6-1) +1)
Zur Info.
Das hier
Code: Alles auswählen
Cint(rnd()*(6-1) *1)
Mehr habe ich momentan nicht zu bieten.
Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.
wehr rächtschraipfähler findet khan si behalden
wehr rächtschraipfähler findet khan si behalden
Re: [erstmal Gelöst]Zufallszahlen sortieren /Macro geht nicht
Hallo,
ist ja richtig - ändere
in
rnd() liefert ja eine Zufallszahl aus dem Intervall [0;1] (theoretisch schön gleichverteilt). Daher sollte man meinen, dass rnd()*5 eine Zahl zwischen 0 und 5 liefert - macht es auch, aber durch das abschließende Abrunden durch int() würde nur ein einziger Zufallswert (nämlich die 5) auch zur 5 abgerundet (aus der Gleichverteilung wird eine schiefe, die Werte 0-4 treten erheblich häufiger auf als die 5). Durch die Addition einer 0,5 wird die Gleichverteilung wieder hergestellt. Es werden nun Zufallszahlen zwischen 0,5 und 5,5 erzeugt, die abgerundet die (natürlichen) Zahlen 0 bis 5 liefern.
Das Sortieren kann natürlich auch in ein extra Makro gepackt werden. Wenn aber sowieso nach jedem Würfeln sortiert werden soll, dann gleich in eines.
ist ja richtig - ändere
Code: Alles auswählen
z=int(rnd()*5*n)+n+aSpalteINI(i)(0)+aSpalteINI(i)(1)+aSpalteINI(i)(2)
Code: Alles auswählen
z=int(rnd()*5*n+0.5)+n+aSpalteINI(i)(0)+aSpalteINI(i)(1)+aSpalteINI(i)(2)
Das Sortieren kann natürlich auch in ein extra Makro gepackt werden. Wenn aber sowieso nach jedem Würfeln sortiert werden soll, dann gleich in eines.
Gruß,
mikeleb
mikeleb
Re: [erstmal Gelöst]Zufallszahlen sortieren /Macro geht nicht
Danke
hoffe fertig
Gelöst
habe aus verschiedenen Formeln was zusammengebastelt da ich noch ne Zufallszahl eingefügt hatte.
hoffe fertig
Gelöst
habe aus verschiedenen Formeln was zusammengebastelt da ich noch ne Zufallszahl eingefügt hatte.
Re: [Gelöst]Zufallszahlen sortieren /Macro geht nicht
Hallo,
es war natürlich teilweise Unsinn, was ich zum Zufallszahlenbereich schrieb. rnd() liefert gleichverteilte Zufallszahlen im Intervall [0;1[, d. h. ohne die 1.
rnd()*6 erzeugt somit Zufallszahlen im Intervall [0;6[ (ohne 6). Durch die Abrundung per int(rnd()*6) werden somit nur die Zahlen 0, 1, 2, 3, 4 und 5 erzeugt. Für die Zufallszahlen von 1 bis 6 muss also int(rnd()*6)+1 gerechnet werden.
Um also die ganzzahligen Zufallszahlen im Bereich [a;b] (inkl. a und b) zu erzeugen, muss man demzufolge int(rnd()*(b-a+1))+a nutzen.
Nutzt man cint() so wird math. gerundet, also wie balu schon schrieb: int(rnd()*(b-a))+a oder int(rnd()*(b-a)+a)
Also wird in meinem Makro aus:
nun korrekterweise:
bzw.
Anmerkung: Die Variante mit +0,5 liefert auch Zufallszahlen im gewünschten Bereich, nur nicht gleichverteilt.
es war natürlich teilweise Unsinn, was ich zum Zufallszahlenbereich schrieb. rnd() liefert gleichverteilte Zufallszahlen im Intervall [0;1[, d. h. ohne die 1.
rnd()*6 erzeugt somit Zufallszahlen im Intervall [0;6[ (ohne 6). Durch die Abrundung per int(rnd()*6) werden somit nur die Zahlen 0, 1, 2, 3, 4 und 5 erzeugt. Für die Zufallszahlen von 1 bis 6 muss also int(rnd()*6)+1 gerechnet werden.
Um also die ganzzahligen Zufallszahlen im Bereich [a;b] (inkl. a und b) zu erzeugen, muss man demzufolge int(rnd()*(b-a+1))+a nutzen.
Nutzt man cint() so wird math. gerundet, also wie balu schon schrieb: int(rnd()*(b-a))+a oder int(rnd()*(b-a)+a)
Also wird in meinem Makro aus:
Code: Alles auswählen
z=int(rnd()*5*n)+n+aSpalteINI(i)(0)+aSpalteINI(i)(1)+aSpalteINI(i)(2)
Code: Alles auswählen
z=int(rnd()*(5*n+1))+n+aSpalteINI(i)(0)+aSpalteINI(i)(1)+aSpalteINI(i)(2)
Code: Alles auswählen
z=cint(rnd()*5*n)+n+aSpalteINI(i)(0)+aSpalteINI(i)(1)+aSpalteINI(i)(2)
Gruß,
mikeleb
mikeleb
Re: [Gelöst]Zufallszahlen sortieren /Macro geht nicht
Hallo mikeleb,
jetzt weiss ich auch warum mein Kopf in den letzten Tagen so verrückt gespielt hat. Der Winter klopft an die Tür, Nass-Kalte 2° C, blöder Wind und Schneefall. *grrrr*
Bäck tho toppik.
Du bleibst bei deiner Methode die im Grunde so aussieht.
Du lässt dir nicht den "Zufallsbereich" (ich nenne das jetzt mal so) ausrechnen, sondern Du gibst einen festen Wert vor. Und das mag ja auch wohl irgendwie funktionieren, weil es ja nur um den Zahlenbereich von inklusive 1 bis einschließlich 6 geht. Aber wie sieht das denn aus, wenn der Zahlenbereich von 97-123 geht?
Und deshalb hatte ich meine Methode vorgeschlagen, die wie folgt aussieht.
An dieser Stelle eine andere Frage.
Kennst Du eigentlich meinen "Passwortgenerator" schon (Er genriert ein 8 Stelliges "Passwort")?
Den findest Du in diesem Thread: viewtopic.php?t=62016
Da steht auch warum ich meine Methode angewendet habe.
Ich zieh mich wieder zurück. Ich werd einfach nicht warm. Ab in meine "Brummelhöhle"
Gruß
balu
jetzt weiss ich auch warum mein Kopf in den letzten Tagen so verrückt gespielt hat. Der Winter klopft an die Tür, Nass-Kalte 2° C, blöder Wind und Schneefall. *grrrr*
Bäck tho toppik.
Auch wenn diese Aussage irgendwie seine Berechtigung hat, besonders wenn man sich das hier durchliest: https://www.mathematik.tu-clausthal.de/ ... llszahlen/ , so denke ich mir mal das wir die Kirche im Dorfe lassen wollen. Für mich ist Zufall schlicht ergreifend einfach Zufall. Und wenn der Zufall gleichverteilt ist, oder wie auch immer, dann ist das für mich kein Zufall mehr sondern ein berechenbares System. Aber da können wir uns bei einem heißen Pott Glühwein unterhalten, nur nicht hier.gleichverteilte Zufallszahlen
Du bleibst bei deiner Methode die im Grunde so aussieht.
Code: Alles auswählen
rnd()*5
Und deshalb hatte ich meine Methode vorgeschlagen, die wie folgt aussieht.
Code: Alles auswählen
Cint(rnd()*(GrößteZahl-KleinsteZahl) +KleinsteZahl)
Kennst Du eigentlich meinen "Passwortgenerator" schon (Er genriert ein 8 Stelliges "Passwort")?
Den findest Du in diesem Thread: viewtopic.php?t=62016
Da steht auch warum ich meine Methode angewendet habe.
Ich zieh mich wieder zurück. Ich werd einfach nicht warm. Ab in meine "Brummelhöhle"
Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.
wehr rächtschraipfähler findet khan si behalden
wehr rächtschraipfähler findet khan si behalden
Re: [Gelöst]Zufallszahlen sortieren /Macro geht nicht
Hallo balu,
die allgemeine Formel ist schon so richtig.
Das ist nur auf die konkrete Situation des TE angepasst, der mit n 6er Würfeln würfeln möchte und damit der Zufallsbereich von n bis 6n geht und schon sind wir bei deiner Formel ...
die allgemeine Formel ist schon so richtig.
Das
Code: Alles auswählen
cint(rnd()*5*n)+n
Gruß,
mikeleb
mikeleb