Chinaunix首页 | 论坛 | 博客
  • 博客访问: 423364
  • 博文数量: 71
  • 博客积分: 1525
  • 博客等级: 上尉
  • 技术积分: 605
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-05 17:28
文章分类

全部博文(71)

文章存档

2012年(21)

2011年(50)

分类: C/C++

2012-03-01 18:45:40

对于区间正式是[2^n-1,2^m-1]的数,可以通过位移的方式来的到对每一位产生一个0或者1,比如[0,7],
其他的实际上都是可以通过转化为01的方法来最终生成。比如从[1,7]到[1,5],第一种方法是直接抛弃6,7,或者是转化为01,在从01转化到[1,5]具体的方法嗨没有想过。
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>

  4. #define RANDNUM 100000000
  5. #define ARRAYLEN 8

  6. #define RANDNUMBER (rand()&0x1)

  7. int rand01()
  8. {
  9. //    int i;
  10.  // time_t t;
  11.     int temp;
  12. // int countnum[ARRAYLEN]={0};
  13. // srand((unsigned)time(&t));
  14. //    for(i=0; i<RANDNUM; i++)
  15.         temp = rand()&0x1;
  16. //        printf("%d,",rand()&0x1);
  17. // countnum[temp]++;
  18.         return temp;
  19.         
  20. /*
  21.     for(i=0; i<ARRAYLEN; i++)
  22.     {
  23.         printf("%d:%d\n",i,countnum[i]);
  24.     }
  25.     */
  26.  // printf("\n");    
  27. }

  28. inline int rand17()
  29. {
  30.     int i;
  31.     int temp=0;
  32.     int resultnum=0;
  33. // printf("temp:");
  34.     for(i=0; i<3; i++)
  35.     {
  36.         temp &=0x0;
  37. // temp = rand01();
  38.         temp = RANDNUMBER;
  39.  // printf("%d",temp);
  40.         resultnum +=(temp<<i);
  41.         
  42.     }
  43.   // printf("\n%d\n",resultnum);
  44.     return resultnum;
  45. }


  46. int main()
  47. {
  48.     int arraynum[ARRAYLEN]={0};
  49.     int count=0;
  50.     int temp=0;
  51.     time_t t;

  52.     srand((unsigned)time(&t));
  53.     while(count<RANDNUM)
  54.     {
  55.         temp = rand17();
  56.    // if(0 != temp)
  57.         {
  58.             arraynum[temp]++;
  59.             count++;
  60.         }
  61.     }

  62.     for(temp=0; temp<8; temp++)
  63.     {
  64.         printf("%d:%d\n",temp,arraynum[temp]);
  65.     }
  66. }
阅读(1685) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~