int main()
{
srand(time(NULL));
int r=rand();
}
上述函數可以生成任意數字,但是如果我想從給定的一組值中生成一個數字,該怎麼辦?
例如,如果我想從4,6,1,7,8,3
的值中隨機生成一個數字。
有什麼辦法可以做到這一點?如何從給定的一組值中生成隨機數?
任何幫助,將不勝感激。
int main()
{
srand(time(NULL));
int r=rand();
}
上述函數可以生成任意數字,但是如果我想從給定的一組值中生成一個數字,該怎麼辦?
例如,如果我想從4,6,1,7,8,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(含)。
@sharth已更新 – progrenhard
你的意思是'r = myArray [rand()%6]'對不對?否則爲什麼你定義'muArray'? – chouaib
@chouaib修復它,以更有意義的感謝。我有點懶惰。 – progrenhard
您可以獲取所需的隨機值列表並將它們存儲在數組中。然後,您可以從列表範圍中選擇一個隨機數並選擇指定索引處的位置。
您可以將隨機數除以剩下的剩餘部分。 用途是作爲你想要的數字數組的索引
例如,如果你把(隨機數%3)你會得到0,1,2 所以你可以使用數組的3號通緝
如果您想要隨機選擇一組預定義的值,請將它們放入數組中,然後使用rand
將索引獲取到數組中。
參見例如this old SO answer關於如何獲得一個範圍內的隨機數字(即在你的情況下零和數組的大小之間)。
但願隨機源碼足夠好... – Deduplicator
'蘭特()'被允許進行徹底的壞:https://stackoverflow.com/questions/24005459/implementation-of-the-random-number-generator-in-cc – Deduplicator