JAVA生成隨機數並排序 為什麼結果前5個都是0?

時間 2021-06-06 19:57:07

1樓:Hello World

=0298000

0000

00k=

0000

0000

000第一次迴圈的時候i迴圈成功的建立了第乙個隨機數,然後進入k迴圈進行你所謂的排序,這個隨機數就立刻消失了

temp=a

[k];a

[k]=

a[k+

1];a[

k+1]

=a[k

];//

交換位置

這三行你告訴我能交換兩個元素的位置?

因為生成的隨機數(a[k]=298)恰好大於陣列初始化的值(a[k+1]=0),於是他就光榮的被temp吃了再也吐不出來了。進入下一次交換的時候temp就迅速的吃了乙個新的值並且忘了這個298。

然後吐槽:

1,亂糟糟的縮排(這種人我都認為應該強制使用Python

2,for

(inti=

0;i

length-1

;i++)你自己數數,迴圈了幾次,建立夠了10個元素沒?

3,即使你把交換位置改成正確的a[k+1]=temp,這個排序演算法依舊是錯的。通過內層迴圈不斷的比較相鄰的元素並交換位置,最後使當前的極值元素排列到佇列頭或者尾,這是典型的氣泡排序。然而在你的演算法裡面,生成佇列和排序同時進行,導致上一輪迴圈確定好位置的極值元素隨時可能被下一輪的隨機數取而代之成為極值,但是這個時候他的位置已經確定了(因為下一次內層迴圈並不會涉及到他)。

這種演算法都想排序成功,你祈禱你隨機生成的就是有序數列吧……

4,new

Random

().nextInt

(900

)+100

;//陣列元素大小為0

——900之間

那你告訴我這個100是幹什麼的?

5,for(int temp1:a)

在同一層迴圈裡接連使用print和println,print也是哭了,要我幹嘛?

for(int temp1:a)

System.out.print(temp1+"");

System.out.println( );

這才是一次輸出完數列最後換行!

2樓:ClassNotFound

我發現了三個問題。

第一,for迴圈為什麼巢狀?難道不應該是第乙個for迴圈用隨機數初始化陣列,第二個迴圈把那個陣列交換麼?你這樣巢狀,第二個for迴圈裡的a[k+1]及之後的數在i=0的時候都還沒被初始化(都是0)。

第二,交換的那個方法,不是a[k+1]=a[k],而是a[k+1]=temp.

最後,僅僅是交換真的不能排序。。。你要寫乙個排序演算法。。。

GPG的生成隨機數的原理是什麼?

玄星 先做個簡答吧。隨機數 不等於 隨便產生的數 用於密碼學的 真隨機數 必須滿足其分布為平均分布 uniform random distribution 這個要求。而這個,在技術實現上是很難的,取樣 啟動雜訊源都是導致隨機bit產生的速度遠遠慢於 隨便弄個數 的原因。偽隨機 pseudorando...

真正意義的隨機數生成器存在嗎?

Giant Nicholas 印度發射的飛彈,取預定落點和實際落點,這兩個點分別與發射點連線形成的夾角,應該是真正意義上的隨機數。確信 手動狗頭。另外,缺點是發射的頻率太低了,資料不太夠用。 蕭葉軒 涉及量子狀態的就是真隨機,不然就是假的。用知名的薛丁格的貓舉例 你需要0和1隨機排列,就是隨機出乙個...

日常生活中有哪些方法可以生成隨機數?

杏杏杏杏 翻一本很厚而且沒有用過的書,取頁碼最後一位數,一般只有13579這幾個數字。很厚能保證這幾個數字迴圈了好多次,而沒用過保證不會很容易卡在某一頁。這個方法不用撕紙也不用兩個人,比較好用 鐵褥 如果你說的隨機數是均勻分布的話。幾乎不可能,從熱力學和統計物理的角度講,達到平衡態或準平衡態的系統可...