0 Daumen
222 Aufrufe

Aufgabe:

Ich muss eine faire Auslosung stattfinden lassen. Dazu erhalte ich vor der Auslosung immer einen zufälligen langen Wert wie z.B. "261891317062040528242642505842792757024629420695236405". Die Auslosung soll in Prozent erfolgen. Also alle Spieler bekommen halt einen bestimmten Bereich zwischen 0-100 zugewiesen. Nun wird eine Rechnung benötigt, in der dieser zufällige lange Wert ein Teil von ist, um eine faire Auslosung stattfinden zu lassen. Und das Ergebnis sollte zwischen 0.00000000 und 100.00000000 liegen. Also das Ergebnis muss zwingend 8 Stellen haben. Es müssen auch Ergebnisse wie 99.99999999 möglich sein oder eben glatte 100 oder 0, damit es fair ist. Denn es ist nicht fair, wenn bestimmte Ergebnisse aufgrund der Rechnung öfter vorkommen. Wichtig ist auch, dass der lange zufällige Wert nie eine bestimmte Länge hat. Also manchmal 44 Stellen und manchmal vielleicht 52. Vermutlich wird der Wert aber nie unter 30 Stellen fallen.

Beispielzahlen:

- 60902519146460026012527617946324334022445137986631411
- 69238476524297131190060449602262629457752886833771891
- 359686930602222958052391261247656419721629646111022990
- 374904779495244276760975858767355880284843117946060866
- 261891317062040528242642505842792757024629420695236405

Hinweis: Die Zahlen sind eigentlich in Hexadezimal. Aber ich denke mit einer Hex Zahl lässt sich das alles noch schlechter realisieren, weshalb ich die Hexzahlen bereits alle in Dezimalzahlen umgerechnet habe.


Problem/Ansatz:

Ich habe bereits schon viel versucht und natürlich auch eine KI befragt. Aber die Ergebnisse waren nie so zufriedenstellend. Mögliche Lösungen waren "Ergebnis = (Zahl % 1000000000) / 10000000" oder "Ergebnis = (Zahl / 10 ^ LängeDerZahl) * 100". Aber bei beiden Varianten bin ich mir unsicher, ob dann wirklich alle Werte zwischen 0 und 100 die gleiche Chance haben herauszukommen. Und Werte wie 100.00000000 und 0.00000000 sind glaube auch nicht mit den Rechnungen möglich. Daher wäre das Spiel unfair, da die Person die den Bereich mit 0 und 100 hat eine Chance sozusagen weniger hat.

Ich weiß auch gar nicht, ob mein Vorhaben möglich ist. Aber eigentlich denke ich das schon, da man mit Mathe viel machen kann. Allerdings bin ich nicht der Beste in Mathe und frage deshalb hier um Hilfe... vielleicht weiß ja jemand weiter. :(

Danke und liebe Grüße

Avatar von

Du musst also nur eine Prozentzahl festlegen?

Wie ergeben sich daraus dann die Anteile der Spieler?

Ganz einfach gesagt: Es gibt 3 Spieler. Spieler 1 hat den Bereich 0-20 für sich beansprucht, Spieler 2 21-70 und Spieler 3 71-100. Wenn nun 76.73627182 ausgelost wird, hat Spieler 3 gewonnen, weil das Ergebnis in seinem Bereich ist.

Edit: Und ja, ich muss nur eine Prozentzahl herausbekommen.

Ok, das Problem ist also, dass deine Zahlen mit 1 bis 9 anfangen, du aber den Bereich von 0 bis 9 aufteilen musst.

Am einfachsten wäre es, wenn man dem Zufallsgenerator mitteilen könnte, dass führende Nullen erlaubt sind. Dann kann man die Zahl als Prozent nehmen.

Wenn das nicht geht, musst du halt die 9 Bereiche in 10 aufteilen, also nicht 10er schritte, sondern 9er-Schritte, also:

Spieler 1: 10,0000 - 28,0000

Spieler 2: 28,0001 bis 73,0000

Spieler 3: 73,0001 bis 100

Leider kann ich die Zufallszahlen nicht beeinflussen. Und die Verteilung der Bereiche ist auch fix und kann aus Gründen nicht geändert werden. Oder vielleicht haben wir uns da falsch verstanden. Also in der Realität werden die User z.B. Bereiche wie 5.73627281 bis 8.73628172 für sich beanspruchen. Das mit 71-100 war nur ein Beispiel. Die Teilnahme erfolgt nämlich auch über eine Einzahlungsmethode, bei der die Währung immer 8 Nachkommestellen hat. Und dadurch wäre es besser, wenn die Bereiche die den Nutzern zugewiesen werden, auch 8 Nachkommastellen haben können. Ansonsten würde es irgendwann Probleme geben.

Es geht doch nur darum, dass Spieler 1 eine 20%ige Chance hat, Spieler 2 50% und Spieler 3 30%.

Wenn du also von 10 bis 100 Zahlen hast, musst du die eben wie oben geschrieben in 9er Schritten aufteilen.

Nehmen wir an die Zahl ist

261891317062040528242642505842792757024629420695236405

Das ginge dann an Spieler 1.

Wäre die Zahl

281891317062040528242642505842792757024629420695236405

geht es an Spieler 2.

Ah, ich verstehe jetzt. Gute Idee. Also entscheidet dann einfach der erste Teil der langen Zahl, wer der Gewinner ist. Also 26.189... und 28.189.... Da muss ich mich aber erstmal noch schlau machen, ob meine langen Zahlen überhaupt alle Ergebnisse liefern können oder ob die ersten Zahlen sich immer nach einem bestimmten Muster generieren. Denn dann könnte es ja sein, dass wir niemals das Ergebnis 89.382... oder so bekommen können.

Danke für die Idee, wird geprüft.

Falls noch jemand eine andere Idee hat, gerne her damit. Wäre sehr dankbar!

Da muss ich mich aber erstmal noch schlau machen, ob meine langen Zahlen überhaupt alle Ergebnisse liefern können oder ob die ersten Zahlen sich immer nach einem bestimmten Muster generieren. Denn dann könnte es ja sein, dass wir niemals das Ergebnis 89.382... oder so bekommen können.

Das muss aber gegeben sein, sonst sind die Zahlen nicht gleichverteilt und keine echten Zufallszahlen. Dann kannst du das vergessen.

1 Antwort

0 Daumen
Ganz einfach gesagt: Es gibt 3 Spieler. Spieler 1 hat den Bereich 0-20 für sich beansprucht, Spieler 2 21-70 und Spieler 3 71-100.

Das sind 101 Werte, von denen 21 für A günstig sind, 50 für B günstig sind und 30 für C.

War das so beabsichtigt?

Du musst doch nur deine großen Zahlen hernehmen und deren Rest bei Teilung durch 101 ermitteln. Schon hast du eine Zahl, die für A, für B oder für C günstig ist.

Avatar von 54 k 🚀

Mein Fehler. Wollte es nur simpel halten. Es darf nur Werte zwischen 0 und 100 geben.

Wenn ich nun aber den Rest nach der Teilung durch 101 berechne, bekomme ich bei den oben genannten Zahlen immer nur ganze Zahlen raus. Wenn es aber viele Teilnehmer gibt, komme ich nicht mit ganzen Zahlen hin, um die Chance entsprechend zu verteilen. Daher wollte ich mit 8 Nachkommastellen arbeiten.

Wenn du eine Zahl mit 8 Nachkommastellen hast und diese mit 10 000 000 multiplizierst, HAST du ganze Zahlen.

Die Zahl mit 8 Nachkommastellen will ich ja erst ausrechnen. Das ist ja dann das Ergebnis der Auslosung. Ich will ja nur mit der ganz langen ganzen Zahl rechnen und daraus dann ein Ergebnis bekommen, welches zwischen 0 und 100 ist und bis zu 8 Nachkommastellen haben kann.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community