2013-10-19 49 views
0

我有一些困難找出如何解決我的問題在這裏,我想爲什麼不去這裏,並要求你的專業人士的一些幫助。輸出4套7上升訂單和唯一的隨機數

最重要的是,我只在學校學習C++幾個星期,大致上我經歷的是if/else,for/while/do循環,數組和顯然更多基本的東西,所以我試圖解決這個問題的主要問題是我的知識是否足夠? 如果我閱讀關於載體等的內容,這會更容易解決嗎?

現在,我已經成功做的是排序,我解決了這樣的數字: 基本上我使用的是一個冒泡排序算法(我認爲)

for(int i=0; i<6; i++) 
{ 
    for(int j=0; j<6; j++) 
    { 
     if(slump[j]>random[j+1])   
     { 
      temp = random[j]; 
      slump[j] = random[j+1]; 
      slump[j+1] = random;   
     } 
    } 
} 

但是我做不到對於我的生活找出如何防止重複出現(可以重複行到行,但不在同一行)時分配每個索引從0-6隨機數。

for(int j=0;j<7;j++) 
{ 
    random[j] = rand()%40+1; 
} 

我希望自己有點清楚,因爲英語不是我的母語,請告訴我,如果我需要澄清任何事情。我希望我能找到一些關於如何解決這個問題的幫助,這裏有一個不太複雜的解決方案。

回答

2

排序過程不會幫助您防止重複,因此必須在之前解決

首先確保沒有重複的號碼。當你得到所有你需要的數字。

爲了確保沒有隨機數,有兩個選項:生成每個號碼

  • 後,覈對已獲得的數字。如果重複,丟棄它並得到一個新的隨機數。

  • 由於您希望在40個範圍內使用7個數字,只需將其作爲訂單使用即可。第一個數字在0-39之間選取,第二個數字在0-38之間,依此類推。已經使用的數量將被跳過(所以的3-5-2-4隨機序列意味着數字序列3-6-2-7)

+0

否_duplicated_隨機數字? – timrau

+0

作爲一個經驗法則,嘗試將(*分析*)你的問題分成幾個不同的,更小的(也許是衆所周知的)問題。 – SJuan76

+0

@timrau你能稍微詳細一點嗎?很難理解你的問題。 – SJuan76

0

嗯,應該不會太難檢查重複。

你可以嘗試,例如以下:

for (int i = 0; i < 7; i++) 
{ 
    random[i] = rand%40 + 1; 
} 

for (int i = 0; i < 7; i++) 
{ 
    for (int j = 1; j < 7; j++) 
    { 
    if(random[i] == random[j]) 
    { 
     random[i] = rand%40 + 1; 
     i = i -1; 
     break; 
    } 
    } 
} 

我敢肯定這應該是一個profecceint支票的號碼是否在隨機[]一直重複。此外,即使矢量更有趣,使用起來也更容易,但它們不會使此操作更容易。

希望它有幫助。 =)

+0

當我嘗試這個解決方案時,cmd只在運行時給我一個空白屏幕。 – Hummelmannen