zoukankan      html  css  js  c++  java
  • c 生成随机不重复的整数序列

    #include <stdio.h>
    #include <malloc.h>
    #include <stdlib.h>
    #include <time.h>
    
    void genNumber(const char *fileName,const int numCount)
    {
        int i = 0, j = 0;
        int *arr = (int*)malloc(sizeof(int) * numCount);
        for(;i < numCount; ++i)
        {
            arr[i] = i;
        }
        FILE *fp = fopen(fileName,"w");
        if(NULL == fp){printf("open %s failed
    ",fileName);}
        i = numCount;
        while(i != 0)
        {
            j = rand()%i;
            fprintf(fp,"%d ",arr[j]);
            arr[j] = arr[--i];
        }
        fclose(fp);
    }
    
    int main()
    {
        time_t t = clock();
        genNumber("num.txt",10000000);
        printf("use time:%lu ms
    ",clock() - t);
        return 0;
    }

    以下代码用于检测生成的数列,是否正确:

    #include <stdio.h>
    #include <malloc.h>
    #include <memory.h>
    #include <time.h>
    
    void checkNum(const char* fileName)
    {
        int size = 0,numCount = 0,i = 0,j = 0,max = 0;
        char *buf = NULL;
        printf("checking %s ...
    ",fileName);
        FILE *fp = fopen(fileName,"r");
        if(NULL == fp){printf("open %s error!
    ",fileName);}
        fseek (fp , 0 , SEEK_END);
          size = ftell (fp);
          rewind(fp);
          buf = (char*)malloc(sizeof(char)*size);
          fread(buf,1,size,fp);
          for(i = 0;buf[i];++i)
          {
              if(buf[i] == ' '){++numCount;}
          }
          free(buf);
          rewind(fp);
          buf = (char*)malloc(sizeof(char)*numCount);
          memset(buf,0,sizeof(char)*numCount);
          for(i=0;i<numCount;++i)
          {
              fscanf(fp,"%d ",&j);
              if(buf[j] != 0)
              {
                  printf("[ %d ] show %d times
    ",j,(int)buf[j] + 1);
              }
              ++buf[j];
              if(j > max){max = j;}
          }
          fclose(fp);
          free(buf);
          printf("size = %d, numCount = %d, max = %d
    ",size,numCount,max);
    }
    
    int main(int argc,char *argv[])
    {
        if(argc != 2)
        {
            printf("argv error!
    ");
            return 0;
        }
        time_t t = clock();
        checkNum(argv[1]);
        printf("use time:%lu ms
    ",clock() - t);
        return 0;
    }
  • 相关阅读:
    shell:echo -e "33字体颜色"
    Linux配置swap
    软工2017第三周作业——词频效能分析
    ffmpeg——关于视频压缩
    软件工程2017第一次作业——随笔汇总
    软件工程2017第一次作业——随笔二
    软件工程2017第一次作业——随笔一
    02-分支结构
    iOS中如何知道app版本已更新
    socket编程中客户端常用函数 以及简单实现
  • 原文地址:https://www.cnblogs.com/tangxin-blog/p/5772955.html
Copyright © 2011-2022 走看看