回覆列表
  • 1 # 手機使用者86565376051

    首先題主你提供的程式碼是有問題的,第一,在呼叫rnd函式之前沒有用randomize過程對隨機數產生器初始化,這樣你每次產生的隨機數都是一樣的。第二,比如我挑第一個隊伍,隨機數產生器賦給x一個7,那麼B組第一個隊伍是德國;而for j…這個迴圈的意思是用西班牙把德國蓋掉。這樣,在你挑選第二個隊伍的時候,選中西班牙的機率(2/8)會比選中其他隊伍之一(1/8)的機率大,這是不符合要求的。類似的道理你可以想見,如果隨機數產生器給出了一個8,for j…這個迴圈就會什麼都不做,這樣你下次還有可能選中西班牙隊,這顯然也是不行的。 對於這個問題,我認為比較簡單的做法應該是將隊伍的排列隨機地打亂,然後依次讀取。即本來0-7的索引分別對應中國到西班牙的八個隊,本來是這麼個順序。打亂相當於產生一箇中國到西班牙這八個隊新的排列,再依次編號。然後每讀取兩個隊就編為一組,讀完也就編完。實際操作中亂序是這樣處理的:將字串陣列中每個元素和包括它自己的以後的某一個隨機的元素交換一次(執行到最後一個元素時,最後一個元素只能和它自己交換,相當於不交換)。這種原位打亂陣列的演算法非常重要。

    讀取多個隊伍可以用二維陣列實現:輸出與讀取基本是類似的過程,甚至完全可以不把讀取的內容儲存而直接輸出,就不再贅述了。至於說要求巴西和中國分在一組,這隻要把這兩隊先排出team數列,對team數列剩餘元素進行上述操作即可。

  • 中秋節和大豐收的關聯?
  • 詠雪的古詩及賞析?