jake1036

面试100 31随机生成1-100个元素只能输出一次

         面试100 31随机生成1-100个元素只能输出一次

   一问题描述
       随机生成1-100 个数字,保证只能生成一次
      考虑使用一个100个整型的数组,然后每个元素都是0-99
      随机生成下标,当生成 一个下标x的时候,交换a[x] 与 a[end]
      并将end值减一。下次生成1-end之间的数字,这样的话就实现了该问题

二 代码示例
    
#include <iostream>
#include 
<cstdlib>
 
using namespace std ;
 
const int N = 10 ;
 
int main()
 
{
   
int i,j;
   
int a[N] ;//100个元素 
   for(i = 0 ; i < N ; i++//建立一个整型数组 
     a[i] = i;
  
   srand((
int)time(0));
     
   
for(i=0 ; i<N ; i++)
  
{
    j
=(int)((N - i)*rand()/(RAND_MAX+1.0));
    printf(
"%d %d \n",j , a[j]);
    swap(a[j] , a[N
-i-1]) ; //交换当前输出的元素和最后一个元素 
    
   }


   system(
"pause") ;
   
return 0 ;    
 }
 

posted on 2011-05-20 15:11 kahn 阅读(296) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理