我需要生成類似於在產品背面用來標識它們的那些一個9位數的唯一代碼。
這些代碼應該是不重複的,它們在數字之間應該沒有關聯。代碼也應該是所有整數。
我需要使用java生成它們,同時將它們插入到數據庫中。
我需要生成類似於在產品背面用來標識它們的那些一個9位數的唯一代碼。
這些代碼應該是不重複的,它們在數字之間應該沒有關聯。代碼也應該是所有整數。
我需要使用java生成它們,同時將它們插入到數據庫中。
我知道這樣做是有點古怪,但我仍然覺得你可以有你幾乎沒有關於彼此唯一的9個位數.....
問你問there should have no correlation between the numbers
public class NumberGen {
public static void main(String[] args) {
long timeSeed = System.nanoTime(); // to get the current date time value
double randSeed = Math.random() * 1000; // random number generation
long midSeed = (long) (timeSeed * randSeed); // mixing up the time and
// rand number.
// variable timeSeed
// will be unique
// variable rand will
// ensure no relation
// between the numbers
String s = midSeed + "";
String subStr = s.substring(0, 9);
int finalSeed = Integer.parseInt(subStr); // integer value
System.out.println(finalSeed);
}
}
int noToCreate = 1_000; // the number of numbers you need
Set<Integer> randomNumbers = new HashSet<>(noToCreate);
while (randomNumbers.size() < noToCreate) {
// number is only added if it does not exist
randomNumbers.add(ThreadLocalRandom.current().nextInt(100_000_000, 1_000_000_000));
}
請注意,數字格式中的下劃線是Java 1.7以來的一個功能。較舊的來源級別將不起作用。 –
-1不使用安全的隨機函數 –
@owlstead的要求是不使用安全的隨機函數,所以我沒有使用它,我沒有看到-1 – s106mo
生成一個9位數的隨機數並在數據庫中查找唯一性。
100000000 + random.nextInt(900000000)
或
String.format("%09d", random.nextInt(1000000000))
使用共享郎的randomNumeric
方法:
不過,你必須檢查你的數據庫的唯一性。
呃......如果你考慮條形碼的數字,這些數字並不完全是隨機的。 –