2012-12-28 95 views
-3

所以我有這個創建長隨機量

Random random1 = new Random(); 
int intrandom1 = random1.Next(); 

我想要的。接下來後放久。我怎麼做?它只接受整數。

+1

這是什麼語言? –

+0

我添加了Java,但不知道什麼是OP的目標 –

+3

@AnoopVaidya Java的下一個是小寫 – BeniBela

回答

3

第一個想法:一個長爲64位整數,是2個的32位整數的組合,所以你可以使用:

((long)random1.Next() << 32) | random1.Next() 

或許

((long)random1.Next() <<< 32) | random1.Next() 

,如果你用java(? )並且需要無符號移位

編輯:看起來不像Java。 Java有random1.nextLong()。也許C#?我不知道

+3

Java已經有['Random.nextLong()'](http://docs.oracle.com/javase/6/docs/api/java/util/Random .html#nextLong()) - 事實上,你在解釋時會起作用。無論如何,爲橫向思維+1。 – SJuan76

+0

Java沒有Next()方法和nextInt()它是有符號的,所以每個第二個數字的頂部位都有1。 –

+0

你確定這會導致數字範圍內的均勻分佈嗎?我傾向於認爲它會使結果偏差一點,但我不是一個足夠好的數學家來證明它。 – Servy

0

它可以通過使用一個簡單的鏈表生成任意長數。試想一下,列表中的每個節點都可以存儲一個隨機生成的數字,並且可以像單一數字一樣讀取該列表。使用這樣的算法,您可以獲得任意長的隨機數。