2017-12-19 4 views
0

Ich versuche, Zufallsdaten für (x, y) Punkte Datensatz zu generieren. Diese generierten Daten werden jedoch gleichmäßig über das Flächendiagramm verteilt. Meine Frage ist: Wie kann ich diese Daten generieren, damit sie nicht gleichmäßig verteilt werden? Beispiel:. einige Punkte nahe beieinander, einige weit. Mit anderen Worten, sie würden kein schönes Quadrat wie jetzt machen.GWT Randomly generierte Daten Bereich verteilt

-Code diese Daten zu erzeugen ist ziemlich einfach:

import com.google.gwt.user.client.Random; 

int max = Random.nextInt(4000); 
int howManyMarkers = 8600; 

for (int k = 0; k < howManyMarkers; k++) { 

    double x = Random.nextDouble() * max; 
    double y = Random.nextDouble() * max; 

    //(x,Y) makes one point (of any color) that you can see in the pictures I attached 
} 

Ergebnis:

enter image description here

Erwartetes Ergebnis: rote Linien machen sollte klar, was ich meine (durchgestrichen Daten in diesem Beispiel sollte nicht da sein).

enter image description here

Hinweis dass gwt Klassen verwendet wurden, nicht java.util. um diese Daten zu generieren. Ich würde mich lieber auf gwt verlassen, wenn möglich, da mein Projekt, das mit all dem verbunden ist, mit GWT/P erstellt wird. Ich könnte es mit java.util.Random tun, aber ich würde es lieber nicht.

Noch ein Hinweis Ich brauche nur wie diese Datensätze große Datenmengen in meinen Tests zu simulieren, so kann ich für Scatter/Trendliniendiagramme für gwt + secha gxt Performance-Tests tun. Ich nehme an, es spielt keine Rolle, welche Klassen verwendet werden, solange es Java ist. Diese Daten, die ich bis jetzt habe, sind nicht realistisch, da eine echte Datenverteilung nicht so ist (ich denke, das würde Sinn machen, da echte Daten nicht zufällig sind ...). Beispiel für einen perfekten Datensatz eingehend.

+1

Können Sie genauer angeben, was Sie wollen? Gleichmäßige Verteilung bedeutet, dass ein Gegenstand so viele Chancen hat wie irgendwo anders. Die Gaußsche Verteilung (wie in der Antwort von @Zionsof) bedeutet andererseits, dass sie eher in die Mitte des Bereichs fällt als die Kanten. Eine Rolle eines Würfels ist einheitlich, aber die Größe einer zufälligen Person neigt dazu, Gauß zu sein. Wie definieren Sie den Bereich über und unter dieser roten Linie? –

+0

@ColinAlworth Ich dachte, ich wäre ziemlich genau :) Die rote Linie in der Theorie könnte überall sein, es zeigt nur, dass die Punkte nicht gleichmäßig über die Handlung verteilt sind. Ich werde dir ein anderes Beispiel veröffentlichen, was genau das ist, was ich will. – CrazySabbath

+0

Es ist klar aus Ihrem Post, dass es willkürlich sein kann, aber nicht, wie Sie es dem Code definieren/bereitstellen möchten, da Ihr Beispiel es zu fehlen scheint. Zufällige Zufallszahlen entsprechen nicht immer unseren Erwartungen. Die Art von "Clustering", nach der Sie fragen, ist bei den meisten typischen Verteilungen, die verwendet werden, nicht etwas, was Zufallszahlen tun. Sie können in Ihrem Beispiel tatsächlich Clustering sehen - Gruppen von Punkten, die sich berühren, und dann Leerzeichen zwischen diesen Gruppen. –

Antwort

0

Nun, da Ihre Anzahl von Markern ziemlich groß ist, macht es Sinn, dass sie als solche gleichmäßig erzeugt werden, da Ihre Methode gleichmäßig verteilte Zahlen erzeugt. Siehe documentation.

Vielleicht sollten Sie versuchen, nicht gleichmäßig zu verwenden, aber vielleicht Random.nextGaussian(), die eine Normalverteilung anstelle von Uniform geben wird.

+0

Gaussian ist besser, aber immer noch nicht ganz das, was ich suche. Da es auch bei jeder Iteration das gleiche Muster beibehält, jetzt nur noch kein Quadrat, sondern ein grober Kreis. Ich frage mich, ob es möglich wäre, zufällig verteilt Punkte zu bekommen. – CrazySabbath

+0

Nun, darüber nachdenken. Diese sind zufällig verteilt Punkte. Außer, da Sie viele von ihnen haben, konvergiert es zu irgendeiner Form, selbst wenn es zufällig ist. Dies ist genau der zentrale Grenzwertsatz, wie Sie sich erinnern können. Wirklich zufällige Zahlen sind unmöglich zu erzeugen. Es gibt keinen echten Zufall in unserem Leben. Was Sie tun könnten, wenn Sie möchten, ist einfach jedes Mal ein neues Maximum zu generieren, anstatt zuerst eines zu generieren und dann mit dem neuen max. Dann wäre es nicht jedes Mal dieselbe Form – Zionsof