2016-05-31 22 views
0

Wie würde ich Zufallszahlen skalieren, um 1-10 zu sagen, ohne die Zufälligkeit zu verlieren?Wie skaliert man Pseudozufallszahlen in einen bestimmten Bereich?

Ich weiß, nur mit% 10 ist keine gute Idee.

Und außerdem, ich brauche einen Startwert, so kann ich auf determinsitic Zahlen testen,

aber ich habe nicht, welchen Wert diese Samen sollte und ich habe verstanden, wie es die Sequenz beeinflusst.

Gibt es einen Unterschied, ob es hoch oder niedrig ist?

danke im voraus.

+0

PRNGs erzeugen eine sehr lange Sequenz, die sich immer wieder wiederholt. Der Startwert bestimmt Ihre Startposition in dieser Reihenfolge. Die Sequenz ist so lang, dass man den Samen nicht kennt, ohne zu wissen, was als nächstes kommt. – zapl

+0

@zapl also, wenn die Sequenz so lang ist, weiß ich, wann es sich wiederholen würde? – jam

+0

nach einer ganzen Weile: http://StackOverflow.com/a/10217354/995891 - und da der Anfang der Sequenz nicht anders aussieht als irgendeine zufällig ähnliche Sequenz, kann man das nicht einmal leicht sagen Ich sehe das Gleiche von Anfang an, es sei denn, Sie behalten jede generierte Nummer im Auge. – zapl

Antwort

3
import java.util.Random; 

Random random = new Random(yourSeed); 
int randomInt = random.nextInt(10) + 1 ; 

Die seed hat keinen anderen Zweck, als PRNG einen Ausgangspunkt zu geben. Es ist rein willkürlich und wird die Verteilung der Zufallszahlen nicht beeinflussen.

Die nextGaussian() unterscheidet sich darin, dass sie Gleitkommazahlen verteilt um eine Glockenkurve zurückgibt.

+0

und macht random.nextInt (10) + 1 für eine gleichmäßige Verteilung? – jam

+0

Das ist, was es auf der Seite der Box sagt ;-) – Stavr00

+0

Entschuldigung, Stapelüberlauf machte mich faul, nach oben schauen java doc – jam

0

in der Regel, wenn ein Zufallswert zu erhalten versuchen, werden Sie etwas wie folgt verwenden:

public int getRandom(int min, int max) 
{ 
    return (int) Math.round(Math.random() % (max - min) + min); 
} 

Oder, wie ich aus Stavr00 Antwort nur in Erinnerung, eine der eingebauten Funktionen verwenden, um von java.util.Random

+0

Funktioniert nicht so. 'Math.random()' erzeugt nur Werte 0..1, du musst wie in http://stackoverflow.com/a/363732/995891 – zapl

+0

@zapl multiplizieren ..... Ich denke, ich sollte etwas bekommen schlafen – Gelunox