2013-04-17 97 views
1

我想在java中創建16位數的隨機數。 我可以用String來做,然後轉換成Long。 還有其他選擇嗎?用16位數字創建隨機數(JAVA)

謝謝!

+0

如果主題發起人接受其中一個答案,他們認爲是有幫助的,如果他們幫助。 – Markus

回答

4

您可以使用Java類隨機這裏生成隨機多頭,像數高達一百萬:

final long MAX_NUMBER_YOU_WANT_TO_HAVE = 9999999999999999L; 
final long MIN_NUMBER_YOU_WANT_TO_HAVE = 1000000000000000L; 
Long actual = Long.valueOf(Math.abs(Float.valueOf(new Random().nextFloat() * (MAX_NUMBER_YOU_WANT_TO_HAVE - MIN_NUMBER_YOU_WANT_TO_HAVE)).longValue())); 
+0

謝謝,但是當我輸入數字:9999999999999999(16digits) 我得到了錯誤:類型int的9999999999999999的字面量超出範圍 – user2097810

+0

使用long不是int,就像我在我的答案中所做的那樣。查看變量的常量。 – Markus

+1

@ user2097810嘗試'9999999999999999L'。 – GriffeyDog

4

如果你確實需要16位(而不是從0到10^17-1 )

Random rand = new Random; 
long accumulator = 1 + rand.nextInt(9); // ensures that the 16th digit isn't 0 
for(int i = 0; i < 15; i++) { 
    accumulator *= 10L; 
    accumulator += rand.nextint(10); 
} 

我可能有循環的關閉接一個,使用i < 16如果需要的話。

2

你想要16位數字的原因可能是關鍵。

如果您只想要一個數字可能與最大的16位數字一樣大,那麼請使用您最喜歡的隨機數生成器生成一個介於09 999 999 999 999 999之間的隨機數。然後,您可以根據需要添加前導零以顯示完整的16個字符,如果這是原因。

如果您明確希望有16位十進制數字,並且第一個數字不能爲零,您可以嘗試使用與999 999 999 999 999相同的練習作爲上限,並在前面添加1到9的隨機數字(將其乘以a quadrillion,然後與另一個隨機數相加,如果需要的話)。

還有很多其他的選擇,但這些可能是最明顯和簡單的實施。我很確定Java中有本地工具可以生成隨機長數字。

+0

謝謝大家!它現在工作:) – user2097810