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

一个乱序输出有关问题

2013-01-07 
一个乱序输出问题#includestdio.h#includestdlib.h#includetime.h#includemalloc.h//输入起点数和

一个乱序输出问题
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<malloc.h>

//输入起点数和终点数,无重复乱序输出其中的数,返回的是数组指针
int* OutOfOrder(int start,int end)  
{
   //申请放置生成结果的数组
   int* ret = (int*)malloc((end - start+1)*sizeof(int)); 
   //申请标志数组,用来标志随机生成的数是否已产生过
   char* flag = (char*)malloc((end +1)*sizeof(char));
   //初始化标志数组,全部值为‘0’
   for(int j = 0;j<end+1;j++)
   {
flag[j] = '0' ;
   }
   //根据时间设置随机种子
   srand((unsigned)time(NULL));
   //生成随机数,每次生成一个随机数,都先在标志数组里寻找这个随机数所对应的空间:如果其内容为1,代表已生成过,
   //舍弃,重新运算;如果其内容不是1,将随机数放入结果数组,并在标志数组中找到随机数对应空间,填入1;
   for(int i = 0;i< end - start + 1;i++)
   {
    int n;
        n = rand()%(end -start +1)+start;
        if('1'!=flag[n])
{
ret[i] = n;
flag[n] = '1';
}else
{
    i--;
}
   }
   free(flag);
   return ret;
}

void main()
{
  int* result = OutOfOrder(0,42768);
  for(int j =0;j<42769;j++)
  {
printf("%d : %d\n",j,result[j]);
  }

}

[解决办法]
Generates a pseudorandom number. A more secure version of this function is available, see rand_s.

 
int rand( void );
 

Return Value
rand returns a pseudorandom number, as described above. There is no error return.

Remarks
The rand function returns a pseudorandom integer in the range 0 to RAND_MAX (32767). Use the srand function to seed the pseudorandom-number generator before calling rand.

Requirements
Routine
 Required header
 
rand
 <stdlib.h>
 
原来rand最大只能到32767。。。。

热点排行