生成一定范围内不重复随机数

    xiaoxiao2021-03-25  123

    //范围0-n范围内,随机m个不重复数,m<=n #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <time.h> int  *d; int  n,m,i,a,b,t; int  main() {      srand ( time (NULL));      while  (1) {          printf ( "Input n m(n>=m>0):" ); fflush (stdout);          rewind (stdin);          if  (2== scanf ( "%d%d" ,&n,&m)) {              if  (n>=m && m>0)  break ;          }      }      d=( int  *) malloc ((n+1)* sizeof ( int ));      if  (NULL==d)  return  1;        for  (i=0;i<=n;i++) d[i]=i; /* 填写0~n */      for  (i=n+1;i>0;i--) { /* 打乱0~n */          a=i-1;b= rand ()%i;          if  (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}      }      for  (i=0;i<m;i++)  printf ( "- " ,d[i]);      printf ( "\n" );        free (d);      return  0; } //Input n m(n>=m>0):100 10 //30 39 40 64  8 72 53 21 58 36 //
    转载请注明原文地址: https://ju.6miu.com/read-40480.html

    最新回复(0)