使用缓存保证1~n每次输出的随机数不一样,代码比较短,思路直接见代码
代码如下 | 复制代码 |
// copyright (c) cguage.com // e-mail:tangcraig@gmail.com // date: 2014-1-21 #include <iostream> #include <map> #include <cmath> #include <iomanip> using namespace std; int main() { map<int, int> arr; int num = 10; srand(time(0)); for (int i = 0; i < 10; ++i) { int idx = (num > 0 ? rand() % num : 0); cout << (arr.find(idx) == arr.end() ? idx : arr[idx]) << endl; --num; arr[idx] = (arr.find(num) == arr.end() ? num : arr[num]); } return 0; } |
虽然些实例是用C语言实现的,但是此算法可以应用于C#, java, php等编程语言。
时间: 2024-08-01 15:02:16