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;
    }
  • 相关阅读:
    vim 颜色主题设置
    给vim安装YouCompleteMe
    linux的主题与图标
    arch点击硬盘无法挂载
    arch安装完成之后不能使用笔记本自带的无线网卡
    curl的使用
    arch优化开机
    seo成功案例的背后秘密
    网站seo整站优化有什么优势
    企业站如何做长尾关键词seo优化
  • 原文地址:https://www.cnblogs.com/tangxin-blog/p/5772955.html
Copyright © 2011-2022 走看看