user-0 提问: 本人现在正在阿里巴巴面试，急求如何写一个函数生成25个随机数，数字在0到50之间。谢谢，最好贴代码

回复:
user: user-1
content: #include <stdio.h> #include<time.h> #include <stdlib.h> #define RADIX 100 int main ( int argc, char *argv[] ) {     int a[25], tmp[32767];     unsigned idum;     idum = (unsigned)time (NULL);     srand (idum);     int i, j;      for ( i = 0; i < 32767; i++ ) tmp[i] = -1;      i = 0;     j = 0;      while ( i < 25 )     {         if ( tmp[j] == -1 )         {             tmp[rand()/RADIX] = 0;             i++;         }         j++;     }      i = 0;     j = 0;      while ( i < 32767 )     {         if ( tmp[i] != -1 )         {             a[j] = i;             printf ( "%d, ", a[j] );             j++;         }         i++;     }      getchar();     return 0; }

user: user-2
content: 引用 6 楼 jyzdtn 的回复:[quote=引用 2 楼 ri_aje 的回复:] 创建一个50个元素的数组，存 [0,50] 中的数字，然后  random shuffle 一下，第一次取的时候给前半个区间，第二次的时候后半个区间。 引用 2 楼 ri_aje 的回复:创建一个50个元素的数组，存 [0,50] 中的数字，然后  random shuffle 一下，第一次取的时候给前半个区间，第二次的时候后半个区间。  如何编码  random shuffle 是什么意思 ，[/quote] http://en.cppreference.com/w/cpp/algorithm/random_shuffle

user: user-0
content: 引用 2 楼 ri_aje 的回复:创建一个50个元素的数组，存 [0,50] 中的数字，然后  random shuffle 一下，第一次取的时候给前半个区间，第二次的时候后半个区间。 引用 2 楼 ri_aje 的回复:创建一个50个元素的数组，存 [0,50] 中的数字，然后  random shuffle 一下，第一次取的时候给前半个区间，第二次的时候后半个区间。  如何编码  random shuffle 是什么意思 ，

user: user-3
content: 随机必然有重复，所谓“不重复的随机”实际上是洗牌。 洗牌算法参考下面： #include <stdio.h> #include <stdlib.h> #include <time.h> int d[6]; int i,n,a,b,t; int c,j; void main() {     srand(time(NULL));     printf("shuffle 0..n-1 demo\n");     for (n=1;n<=5;n++) {/* 测试1～5个元素 */         printf("_____n=%d_____\n",n);         j=1;         for (c=1;c<=n;c++) j=j*c;/* j为n! */         j*=n*2;         for (c=1;c<=j;c++) {/* 测试n*2*n!次 */             for (i=0;i<n;i++) d[i]=i;/* 填写0～n-1 */             for (i=n;i>0;i--) {/* 打乱0～n-1 */                 a=i-1;b=rand()%i;                 if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}             }             printf("%04d:",c);             for (i=0;i<n;i++) printf("%d",d[i]);             printf("\n");         }     }     printf("shuffle 1..n demo\n");     for (n=1;n<=5;n++) {/* 测试1～5个元素 */         printf("_____n=%d_____\n",n);         j=1;         for (c=1;c<=n;c++) j=j*c;/* j为n! */         j*=n*2;         for (c=1;c<=j;c++) {/* 测试n*2*n!次 */             for (i=1;i<=n;i++) d[i]=i;/* 填写1～n */             for (i=n;i>1;i--) {/* 打乱1～n */                 a=i;b=rand()%i+1;                 if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}             }             printf("%04d:",c);             for (i=1;i<=n;i++) printf("%d",d[i]);             printf("\n");         }     } }

user: user-4
content: 引用 3 楼 u010794470 的回复:#include <stdio.h> #include<time.h>  int main(int argc, char *argv[]) { 	int a[25]; 	srand((int)time(NULL)); 	int i=0; 	for(i=0;i<25;i++) 	{ 		a[i]=rand()%50; 		printf("%d ",a[i]); 	}		 	return 0; } 头文件包括下面这个才对  #include <stdlib.h>

user: user-5
content: #include <stdio.h> #include<time.h>  int main(int argc, char *argv[]) { 	int a[25]; 	srand((int)time(NULL)); 	int i=0; 	for(i=0;i<25;i++) 	{ 		a[i]=rand()%50; 		printf("%d ",a[i]); 	}		 	return 0; }

user: user-2
content: 创建一个50个元素的数组，存 [0,50] 中的数字，然后  random shuffle 一下，第一次取的时候给前半个区间，第二次的时候后半个区间。

user: user-6
content: 什么叫2次生成25个随机数？