//随即产生10个数 0-7FFF
#include "stdafx.h"
#include "time.h"
#include "iostream"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
srand((unsigned int)time(NULL));
for(int i=0;i<10;++i)
{
unsigned int N = rand();
cout<<N<<endl;
}
return 0;
}
//得到0~1上的一个双精度随机数
srand((unsigned int)time(NULL));
double hmmgetrand(void)
{
return(double)rand()/RAND_MAX;
}
//随机发牌的一解法
#include <iostream>
#include <time.h>
using namespace std;
void deal(int a[],int b[],int c[],int d[])
{
int nCount = 0;
int na = 0, nb = 0, nc = 0, nd = 0;
srand((unsigned) time(NULL));
while (nCount <= 51) // for(;nCount<=51;)
{
unsigned int N = rand();
for (int i = 0; i < 16; i++)
{
unsigned int ret = ( (3 << (i * 2)) & N) >> ( i * 2 ); //3左移(i*2)&N,然后右移(i*2)
switch (ret)
{
case 0:
{
if (na < 13)
a[na++] = nCount++;
break;
}
case 1:
{
if (nb < 13)
b[nb++] = nCount++;
break;
}
case 2:
{
if (nc < 13)
c[nc++] = nCount++;
break;
}
case 3:
{
if (nd < 13)
d[nd++] = nCount++;
break;
}
}
}
}
}
int main()
{
int a[13], b[13], c[13], d[13];
deal(a,b,c,d);
int i = 0;
for (i = 0; i < 13; i++)
{
printf("%02d, ", a[i]);
}
printf("/n");
for (i = 0; i < 13; i++)
{
printf("%02d, ", b[i]);
}
printf("/n");
for (i = 0; i < 13; i++)
{
printf("%02d, ", c[i]);
}
printf("/n");
for (i = 0; i < 13; i++)
{
printf("%02d, ", d[i]);
}
printf("/n");
getchar();
return 0;
}