#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int n=100;
int m=100000;
double random()//生成0-1之间的随机数
{
return (double)rand()/RAND_MAX;
}
int random2(int m)//生成[0,m-1]之间随机数
{
return (int)(random()*(m-1)+0.5);
}
int main()
{
srand(time(NULL));
printf("%d %d\n",n,m);
int i;
for(i=0;i<m;i++)
{
if(rand()%2==0)
printf("A");
else
printf("B");
int x,y;
for(;;)
{
x=random2(n)+1;
y=random2(n)+1;
}
if(x!=y)
{
break;
}
printf("%d %d",x,y);
}
return 0;
}
先生成[0-1]之间的随机数,再乘以m-1,加上0.5生成[0-m-1]之间的随机数。
rand()%n---->生成[0-n]之间随机数,但是结果又可能不均匀。
原文:http://www.cnblogs.com/candybread/p/5068047.html