题目摘要:利用random(0,1);提供一个random(a,b)的函数
分析:利用random(0,1)产生2进制数,这可以产生所有0,1,2……n的数,当这些数在[a,b]中时,我们就返回它,不在就不返回。实现时n只要包含b-a就可以了然后加上a后再判断。
1 #include<iostream> 2 #include<ctime> 3 4 using namespace std; 5 6 int RandomCopy(int a, int b) 7 { 8 srand(time(NULL)); 9 int c = b - a; 10 int i=0; 11 while (c != 0) 12 { 13 c = c / 2; 14 i++; 15 } 16 int sum = INT_MAX; 17 while (sum > b || sum < a) 18 { 19 sum = 0; 20 for (int j = 0; j < i; j++) 21 { 22 sum = sum * 2 + rand() % 2; 23 } 24 sum = sum + a; 25 } 26 return sum; 27 } 28 29 int main() 30 { 31 cout << RandomCopy(2, 4); 32 return 0; 33 }
时间: 2024-11-10 00:58:54