2014-07-17 102 views
0
int main() 
{ 
    srand(time(NULL)); 
    int r=rand(); 
} 

上述函數可以生成任意數字,但是如果我想從給定的一組值中生成一個數字,該怎麼辦?
例如,如果我想從4,6,1,7,8,3的值中隨機生成一個數字。
有什麼辦法可以做到這一點?如何從給定的一組值中生成隨機數?

任何幫助,將不勝感激。

+1

'蘭特()'被允許進行徹底的壞:https://stackoverflow.com/questions/24005459/implementation-of-the-random-number-generator-in-cc – Deduplicator

回答

3

這很簡單。創建一個數組。有你想要的輸出(4,6,1,7,8,3)。然後在數組中選擇一個隨機存儲桶。 % 6基本上選擇值爲0 - 5這是數組中的索引。

int main() 
{ 
    srand(time(NULL)); 
    int myArray[6] = { 4,6,1,7,8,3 }; 
    int randomIndex = rand() % 6; 
    int randomValue = myArray[randomIndex]; 
} 

有關如何操作rand()的更多信息。

rand() % 7 + 1

說明:

  • 蘭特()返回0和大量之間的隨機數。

  • %7得到除以7後的餘數,它是一個從0到6的整數。

  • 1將範圍更改爲1至7(含)。

+0

@sharth已更新 – progrenhard

+0

你的意思是'r = myArray [rand()%6]'對不對?否則爲什麼你定義'muArray'? – chouaib

+0

@chouaib修復它,以更有意義的感謝。我有點懶惰。 – progrenhard

0

您可以獲取所需的隨機值列表並將它們存儲在數組中。然後,您可以從列表範圍中選擇一個隨機數並選擇指定索引處的位置。

0

您可以將隨機數除以剩下的剩餘部分。 用途是作爲你想要的數字數組的索引

例如,如果你把(隨機數%3)你會得到0,1,2 所以你可以使用數組的3號通緝

2

如果您想要隨機選擇一組預定義的值,請將它們放入數組中,然後使用rand將索引獲取到數組中。

參見例如this old SO answer關於如何獲得一個範圍內的隨機數字(即在你的情況下零和數組的大小之間)。

+0

但願隨機源碼足夠好... – Deduplicator

相關問題