如何随机产生4个不重复的数,比如随机1~4的数,但是不能重复!
这里基于C++11
#include <random>
std::uniform_int_distribution<unsigned> u(1,4);
std::default_random_engine e;
e.seed((unsigned)time(NULL));
int random_number = u(e);
采用的标准分布是离散型均匀分布。
可以参考这里http://www.stroustrup.com/C++11FAQ.html#std-random
这里是产生随机数,随机数就无法保证能不重复,要完全不重复,就自己搞个容器从里面取。
int startArray] = {1, 2, 3, 4 };
int resultArray;//结果存放在里面
std::default_random_engine e(time(NULL));
for (int i = 0; i < 4; i++)
{
//int seed = CCRANDOM_0_1(0, 4 - i);//从剩下的随机数里生成
std::uniform_int_distribution<> u(0, 3 - i);
int seed = u(e);
resultArray* = startArray;//赋值给结果数组
startArray = startArray;//把随机数产生过的位置替换为未被选中的值。
}*
NSMutableIndexSet *indexset;
NSInteger i;
while (!&&indexset.count<4) {
//
i = arc4random()%100;
;
}
//结果就在indexset集里
那就不叫随机数了,从0000直接加到9999得了。
或者就把他们打乱加入列表,挨个取。
NSMutableArray *array = ;
do {
NSInteger randomI = arc4random() % 4+1;
if (!) {
;
}
} while (array.count < 4);
```