首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

生成k个小于n的互不相同的随机数出错解决方案

2012-05-24 
生成k个小于n的互不相同的随机数出错环境:windows xp, vc6.0C/C++ code#include stdio.h#include stdli

生成k个小于n的互不相同的随机数出错
环境:windows xp, vc6.0

C/C++ code
#include <stdio.h>#include <stdlib.h>#include<time.h>#define N 20#define K 10void swap(int *a, int *b){    *a ^= *b;    *b ^= *a;    *a ^= *b;}void generateDiffRandV1(int a[], int n, int k){    int i;    time_t t;    for (i = 0; i < n; i++){        a[i] = i;    }    srand((int)time(&t));    for (i = 0; i < k; i++){        swap(&a[i], &a[i+rand()%(n-i)]);    }}int main(){    int a[N];    generateDiffRandV1(a, N, K);    printArray(a, K);            return 0;}


为什么generateDiffRandV1()函数生成的随机数当中会有同时出现两个'0'?


[解决办法]
C/C++ code
void swap(int *a, int *b){    if (a != b)    {        *a ^= *b;        *b ^= *a;        *a ^= *b;    }}
[解决办法]
void swap(int *a, int *b)
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}

如果a和b的值一样,是什么结果?

热点排行