0

Der obige Code füllt Array [r] von r [0] = 0 bis r [999] = 4527. Dies ist das Ergebnis eines zufälligen Laufs . Wenn r.length auf 2000 erhöht wird, erhöht das letzte Element r [1999] 8963. Ich versuche die Lösung zu finden, um das Array [r] innerhalb des Bereichs 0 - 5000 zu füllen. Selbst wenn r.length erhöht wird, sollte das Array in diesem Bereich exponentiell gefüllt werden. Beachte in diesem Fall, wenn r [999] < = 5000 ist, sollte r [1999] auch < = 5000 sein.Füllen Sie ein Array mit Zufallszahlen innerhalb eines bestimmten Bereichs mit Exponentialverteilung

Sagen wir, r.length steht für total no. der Ereignisse und jedes Element des Arrays r stellt die Zeit dar, zu der ein Ereignis eintritt. Die Gesamtzeit beträgt 5000 Einheiten. Der Grund dafür ist, dass das erste Ereignis zum Zeitpunkt 0 und zuletzt zum Zeitpunkt < = 5000 auftritt, selbst wenn r.length erhöht oder verringert wird, sollte die Inter-Ereigniszeit von zwei Ereignissen entsprechend angepasst werden.

Vielen Dank

+2

Bitte nehmen Sie sich Zeit, um beim nächsten Mal eine Frage zu stellen –

+0

@ScaryWombat Ist irgendetwas nicht verständlich? –

+0

Sie stellen nicht wirklich eine Frage. Für den Datensatz woher kommt die 'ExponentialDistribution' Klasse? Eine einfache Lösung ist, wenn die Nummer nicht Ihren Anforderungen entspricht, dann verwenden Sie sie nicht, suchen Sie nach einer anderen Nummer. Auch wenn Sie 'i' hinzufügen (der Index), dann wenn der Index wächst, so wird die Nummer –

Antwort

0

Ich denke, was Sie fordern ist: ein Array von beliebiger Länge mit Zahlen füllen die Zeit darstellt, an dem ein Ereignis eintritt. Die Zeit des letzten Ereignisses sollte kleiner als ein bestimmter Betrag sein.

Wenn Sie wirklich Ereignisse eintreffen, dann ist das nicht sehr sinnvoll. Siehe https://en.wikipedia.org/wiki/Arrival_theorem für viele Details, warum nicht. Zusammenfassend lässt sich jedoch sagen, dass Sie normalerweise entscheiden, wie oft (im Durchschnitt) Ereignisse auftreten und wie viele Ereignisse in der Liste enthalten sein sollen. Um eine realistische Verteilung zu erhalten, bei der eine bestimmte Anzahl von Ereignissen in einer bestimmten Zeit endet, müssten Sie wahrscheinlich die Generierung ohne Begrenzung ausführen und dann alle Ereigniszeiten zurückskalieren. Aber ehrlich gesagt bin ich nicht sicher, was der Sinn dafür wäre.

Alternativ, wenn Sie nur eine Reihe von Zahlen zwischen zwei Bereichen mögen, die aufsteigend sortiert werden, dann ist das ziemlich einfach:

int[] events = random.ints(count, min, max).sorted().toArray(); 

Dies würde nicht eine realistische Simulation einer Poisson-Verteilung, aber ohne weitere Informationen über das, was Sie erreichen möchten (und warum Sie denken, dass eine exponentielle Verteilung erforderlich ist), dann ist es schwierig, spezifischere Ratschläge zu geben.

Verwandte Themen