2016-07-26 8 views
0

Ich versuche, diesen Algorithmus, der eine untere und obere Grenze für zwei Zahlen (die beiden Zahlen können unterschiedliche untere und obere Grenzen) und gibt zwei Zufallszahlen innerhalb Dieser BereichSo wählen Sie zwei Zufallszahlen ohne Übertrag beim Hinzufügen

Der Haken ist jedoch, dass, wenn die beiden Zahlen hinzugefügt werden, kein "carry" da sein sollte. Das bedeutet, die Summe der Ziffern in jedem Ort sollte nicht mehr als 9.

sein Wie kann ich sicherstellen, dass die Zahlen wirklich zufällig sind und dass kein Buch tritt auf, wenn die Addition der beiden Zahlen

Vielen Dank!

Edit: Die Bereiche variieren können, kann der breiteste Bereich von 0 bis 999. Auch sein, ich bin mit VBA (Excel)

+2

Welche Sprache verwenden Sie? Wie viele Ziffern kann Ihre Zufallszahl sein? –

+0

@TimBiegeleisen, alle ausgezeichneten Fragen. OP, Ihre Funktion wird nicht "wirklich zufällig" sein, wenn sie gezwungen wird, Ergebnisse wegen "Tragens" fallen zu lassen. Trotzdem würde ich Ihnen empfehlen, zwei Funktionen zu verwenden. Eine Funktion, die nur Zufallszahlen generiert, und eine andere Funktion, die die Ziffern von zwei Zahlen ändert, wenn die zwei Ziffern an derselben Stelle (auf einem Basis-10-System) größer als 9 sind. – SpencerD

+0

@SpencerDoak. Ich dachte darüber nach und wunderte mich, ob dann nicht ein Teil der Zahlenkombination wahrscheinlicher ist. ..und ich habe die zweite Funktion nicht ganz verstanden. Wie sollte ich die Ziffern ändern? – B2VSi

Antwort

0

Einen einfachen und verteilungs richtigem Weg, dies zu tun, ist Rejection Sampling zu verwenden, auch bekannt als " Annahme/Ablehnung ". Generieren Sie die Werte unabhängig voneinander, und wenn die Übertragsbeschränkung verletzt wird, wiederholen Sie den Vorgang. In Pseudo-Code

do { 
    generate x, y 
} while (x + y > threshold) 

Die Anzahl von Malen iteriert wird die Schleife hat ein geometric distribution mit einem Erwartungswert von (Anteil der Summen unterhalb der Schwelle) -1. Wenn Sie beispielsweise unter dem Schwellenwert von 90% der Zeit sind, wird die langfristige Anzahl der Iterationen auf 10/9, 1,11 ... Iterationen pro erzeugtem Paar gemittelt. Bei geringeren Akzeptanzwahrscheinlichkeiten wird es im Durchschnitt mehr Versuche geben.