2016-05-06 29 views
1

Ich habe eine 12-stellige Nummer, in der die ersten 8 Ziffern fest sind, aber die letzten 4 Ziffern (Nummer) Ich möchte anders sein, Es gibt mir Bereich (0000-9999). Problem ist, dass dieses Skript 2-3 mal täglich oder an verschiedenen Tagen ausgeführt werden kann. Wenn ich Zufallsfunktion verwende, kann es vorkommen, dass eine Zahl, die heute erzeugt wird, dieselbe ist wie die von Morgen. Jede Lösung, um jede 4-stellige Nummer jedes Mal/jeden Tag zu erhalten.Zufallszahl jedes Mal/jeden Tag

+3

kann :) Warum sollte benutzt du zufällig hier? Zählen Sie einfach von 0 bis 9999 und speichern Sie irgendwo, was die zuletzt verwendete Nummer war. – Tom

+0

Mögliches Duplikat von [Generierung von eindeutigen Zufallszahlen in Java] (http://stackoverflow.com/questions/8115722/generating-unique-random-numbers-in-java) – vefthym

Antwort

1

Sie können eine Zeit nicht eindeutig auf eine vierstellige Zahl komprimieren, so dass die Annäherung sofort beseitigt werden kann.

Was Sie tun müssen, ist eine Zahl irgendwo zu speichern. Beginnen Sie bei 0. Ihr Skript muss die gespeicherte Zahl erhöhen, die Aufgabe ausführen und den erhöhten Wert speichern. Wenn dieser Wert 10.000 erreicht, haben Sie Ihr Kapazitätslimit für Ihr System erreicht.

Wenn Sie das Schema zu zufällig für Ihre Benutzer benötigen, dann ordnen Sie dieses fortlaufende Schema zu einem gemischten Satz von Zahlen nur für den Zweck der Konstruktion der 12-stelligen Nummer.

0

Ich weiß, das kann nicht sein, was Sie wollen, aber das ist eine Methode, die ich gemacht, die von der Zeit und ein paar Arrays eine Zufallszahl erzeugt, manipulieren und es verwenden, wenn Sie

import java.text.*; 
import java.util.*; 

public class Randomizer { 
public void randomizer() throws InterruptedException { 
    Randomizer r = new Randomizer(); 
    int[] numbers = { 3, 7, 2, 62, 1, 53, 16, 563, 12, 13, 75 }; 
    Calendar rightNow = Calendar.getInstance(); 
    int hour = rightNow.get(Calendar.HOUR_OF_DAY); 
    int minute = rightNow.get(Calendar.MINUTE); 
    int seconds = rightNow.get(Calendar.SECOND); 
    int[] numbers2 = { 10, 32, 61, 2, 5 }; 
    int[] date = { hour, minute, seconds }; 
    int RandomNumber = (r.getRandom(date) * r.getRandom(numbers)) + r.getRandom(numbers2); 
    System.out.println("Random number generated: " + RandomNumber); 

} 

public static int getRandom(int[] array) { 
    int rnd = new Random().nextInt(array.length); 
    return array[rnd]; 
} 

public static void main(String[] args) throws InterruptedException { 
    Randomizer r = new Randomizer(); 
    r.randomizer(); 

} 

} 
+0

Wenn Sie Fragen haben, fragen Sie, ob dieser Code keine hat Relevanz in Ihrer Situation bitte sagen Sie mir. –

+0

@ Nathan-Vielen Dank für dieses Programm. Der einzige Punkt ist, dass es 3 Stellenzahl erzeugt, aber ich will nur 4 Stellen haben. – sunny

+0

@sunny manipulieren Sie es wie Sie wollen, wenn dies die Antwort, die Sie suchten, als bitte klicken Sie auf das Häkchen und Upvote, so dass die Frage geschlossen wird, alle anderen Fragen nicht zögern, mich oder die Gemeinschaft zu fragen :) –