对于区间正式是[2^n-1,2^m-1]的数,可以通过位移的方式来的到对每一位产生一个0或者1,比如[0,7],
其他的实际上都是可以通过转化为01的方法来最终生成。比如从[1,7]到[1,5],第一种方法是直接抛弃6,7,或者是转化为01,在从01转化到[1,5]具体的方法嗨没有想过。
- #include <stdio.h>
-
#include <stdlib.h>
-
#include <time.h>
-
-
#define RANDNUM 100000000
-
#define ARRAYLEN 8
-
-
#define RANDNUMBER (rand()&0x1)
-
-
int rand01()
-
{
-
// int i;
-
// time_t t;
-
int temp;
-
// int countnum[ARRAYLEN]={0};
-
// srand((unsigned)time(&t));
-
// for(i=0; i<RANDNUM; i++)
-
temp = rand()&0x1;
-
// printf("%d,",rand()&0x1);
-
// countnum[temp]++;
-
return temp;
-
-
/*
-
for(i=0; i<ARRAYLEN; i++)
-
{
-
printf("%d:%d\n",i,countnum[i]);
-
}
-
*/
-
// printf("\n");
-
}
-
-
inline int rand17()
-
{
-
int i;
-
int temp=0;
-
int resultnum=0;
-
// printf("temp:");
-
for(i=0; i<3; i++)
-
{
-
temp &=0x0;
-
// temp = rand01();
-
temp = RANDNUMBER;
-
// printf("%d",temp);
-
resultnum +=(temp<<i);
-
-
}
-
// printf("\n%d\n",resultnum);
-
return resultnum;
-
}
-
-
-
int main()
-
{
-
int arraynum[ARRAYLEN]={0};
-
int count=0;
-
int temp=0;
-
time_t t;
-
-
srand((unsigned)time(&t));
-
while(count<RANDNUM)
-
{
-
temp = rand17();
-
// if(0 != temp)
-
{
-
arraynum[temp]++;
-
count++;
-
}
-
}
-
-
for(temp=0; temp<8; temp++)
-
{
-
printf("%d:%d\n",temp,arraynum[temp]);
-
}
-
}
阅读(1680) | 评论(0) | 转发(0) |