有沒有更好的算法可以做到以下幾點?隨機生成一個可被N整除的數字的最佳算法
我試圖產生50個可以被7整除的隨機數。然後我選擇其中的50個隨機&返回那個數。
是否有更高效/更好的方法來隨機生成可被7整除的數字?有沒有更好的方法可以編碼/做到這一點?
unsigned int generateRandomNumberDivisibleByN(unsigned int n, unsigned int num=10)
{
// Post: Generate many different random numbers that are divisible by n, then randomly select one of
// of those numbers to return.
unsigned int potentialNums[num];
for (int i=0, j=2; i<num; i++, j=rand()%INT_MAX)
{
potentialNums[i] = j*n;
}
return potentialNums[ rand()%num ]; // should this be rand()%(num-1) so it never returns an invalid array index?
}
是否真的有益處經過短短'蘭特()* N'?生成一個隨機數字的數組,然後隨機選擇一個真的會改善什麼? – cnicutar
我知道生成一個可以被7整除的隨機數的最簡單方法是'7 * rand()'。如果你有更多的具體需求,你需要明確說明需求...... –
你應該小心溢出:當'j> INT_MAX/7'時,'7 * j'會溢出。 –