我是一個存儲5個輸入(int)的數組,在猜謎遊戲中。C++:如何從一個數組中生成一個隨機數
我想要做的是從該數組中生成一個隨機數(從存儲的五個數中選擇一個),任何人都可以幫助我嗎?
我familliar與蘭特氣電兩用,但只選擇一個範圍OCH號內的隨機數,而不是5個輸入之間......
我是一個存儲5個輸入(int)的數組,在猜謎遊戲中。C++:如何從一個數組中生成一個隨機數
我想要做的是從該數組中生成一個隨機數(從存儲的五個數中選擇一個),任何人都可以幫助我嗎?
我familliar與蘭特氣電兩用,但只選擇一個範圍OCH號內的隨機數,而不是5個輸入之間......
假設你的數組對象int arr[5]
那麼你可以使用的一個以下方法取決於您使用的C++版本。
的C++所有版本:
int random_number = arr[rand() % 5];
請記住,這個解決方案沒有偏見的問題困擾。如果你想才達到生成的數字分配好這個方法然後讀下面的回答同一個問題:https://stackoverflow.com/a/6943003/1289981
由於C++ 11(最正確的方法):
std::random_device rd;
std::default_random_engine e1(rd());
std::uniform_int_distribution<int> uniform_dist(0, 4);
int random_number = arr[uniform_dist(e1)];
你的第一種方式遭受偏見問題。請參閱[這裏](http://stackoverflow.com/a/6943003/3422652)。 –
@ChrisDrew你絕對正確。但這並不意味着這種方式行不通。該解決方案將產生隨機生成的數字,但分佈非常不好。 – maxteneff
只需使用一個隨機數生成器生成0,1,2,3,4
中的數字,並將該數字用作數組中的索引,顯然。
rand
是我們通常不鼓勵人們使用的東西,因爲它不是線程安全的。但是,在你的簡單情況下,它應該工作。
您可以簡單地生成一個從0到數組長度爲1的隨機數x
,然後從中選取第x個數字。
事情是這樣的:
int x = rand() % 5;
cout << inputs[x]; // here is your value
這聽起來像是場工作,所以沒有直接給你答案,邏輯需要遵循IS-
生成一個隨機數字,它是在你輸入數組的範圍:
0 to ([number of inputs] - 1)
在你的情況下,將是0到4. 確保將隨機數存儲到變量中,例如一個稱爲randonInput
然後就從數組使用所生成的個數,選擇變量,即:
int randomInput = inputArray[randomNumber];
然後,你將有存儲在randomInput可變
隨機輸入做yournumber%5來構造數組索引。 –
使用C++ 11,您應該使用[''](http://en.cppreference.com/w/cpp/numeric/random),而不是舊的[rand](http://en.cppreference.com/w/cpp/numeric/random/rand) –