随机产生4个不重复的数

如何随机产生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得了。:11:

或者就把他们打乱加入列表,挨个取。

NSMutableArray *array = ;
        do {
            NSInteger randomI = arc4random() % 4+1;
            if (!) {
                ;
            }
        } while (array.count < 4);


```