用C/C++怎么生成特定值的不重复的随机数

用C/C++如何生成特定值的不重复的随机数?
比如就在 1,4,7,10,13 这5个数之间随机选一个数?经过数次循环随机生成这5个特定数?
------解决方案--------------------
引用:
Quote: 引用:

int map[] = {1,4,7,10,13};
while (xxx)
{
    i = rand() % 5;
    xxx = map[i];
    xxxxx;
}

美女! 首先谢谢你给我提供了一个思路,其次有没有不用数组保存的方法啊?如果用数组保存,那就要另外开辟内存空间增加了内存消耗。因为我的代码中已经有一个数组了,而我实际的想法是就在这个数组中,1,4,7,10,13这几个数随机赋值给array[1],array[4],array[7],array[10],array[13],也就是数组下标和他的值范围都是在这5个数1,4,7,10,13中

那你(rand() % 5) * 3 + 1不就好了?
------解决方案--------------------
思路就是使用在循环中 使用rand()%5产生一个随机索引,将其值与第i个数组值互换(循环结束后,数组顺序已被打乱)