2016-05-06 4 views
1

У меня есть 12-значное число, в котором первые 8 цифр фиксированы, но последние 4 цифры (число), я хочу быть другим, Он дает мне диапазон (0000-9999). Проблема заключается в том, что этот скрипт может выполняться 2-3 раза в день или в разные дни. Если я использую случайную функцию, может случиться, что одно число, которое генерируется сегодня, такое же, как и завтра. Любое решение для получения разного 4-значного числа каждый раз/каждый день.Случайное число каждый раз/каждый день

+3

Почему бы вы используете случайные здесь? Просто считайте от 0 до 9999 и храните где-нибудь, какой последний использованный номер был. – Tom

+0

Возможный дубликат [Генерация уникальных случайных чисел в Java] (http://stackoverflow.com/questions/8115722/generating-unique-random-numbers-in-java) – vefthym

ответ

1

Вы не можете сжать время однозначно до 4-значного числа, чтобы можно было немедленно устранить подход.

Что вам нужно сделать, так это хранить счет. Начните с 0. Ваш скрипт должен увеличивать этот сохраненный номер, выполнять свою задачу, а затем сохранять увеличенное значение. Если это значение достигнет 10000, то вы достигли предела емкости для своей схемы.

Если вам нужна схема , введите случайным образом для ваших пользователей, а затем сопоставьте эту последовательную схему с перетасованным набором чисел исключительно для того, чтобы построить 12-значное число.

0

Я знаю, что это не может быть то, что вы хотите, но это метод, который я сделал, который генерирует случайное число от времени и пары массивов, манипулировать и использовать его, если вы можете :)

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

Если у вас есть вопросы, спросите, если этот код не имеет релевантность в вашей ситуации, пожалуйста, скажите мне. –

+0

@ Nathan - Большое вам спасибо за эту программу. Единственный момент - это генерировать 3 цифры, но я хочу только 4 цифры. – sunny

+0

@sunny манипулирует им, как вы хотите использовать, если бы это был ответ, который вы искали, пожалуйста, нажмите галочку и вверх, чтобы вопрос был закрыт, любые другие вопросы не стесняются спрашивать меня или сообщество :) –

Смежные вопросы