编程解决一付扑克牌洗牌问题!
可能要用到rand,但是它会产生一样的数啊!
----------------解决方案--------------------------------------------------------
因为种子都是相同的,所以每次运行产生的数是相同的
给你个动手的机会,初始化种子可用srand()或者randmize()
自己查函数说明看吧 加深下印象
----------------解决方案--------------------------------------------------------
因为种子都是相同的,所以每次运行产生的数是相同的
给你个动手的机会,初始化种子可用srand()或者randmize()
自己查函数说明看吧 加深下印象
很感谢你提供的说明,但是我自己写了一段程序,却不能实现!
请看
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
int i,j,num[52],n;
time_t t;
n=0;
srand((unsigned) time(&t));
printf("Ten random numbers from 0 to 99\n");
for(i=0; i<52; i++)
{
num[i]=rand() % 53;
printf("%-4d",num[i]);
}
for (i =0 ; i < 51 ; i ++)
for (j =i+1; j <52 ; j++)
if (num[i] == num[j] )
{
n++;
printf("有相同的随机数!!! num=%d 有%d个 \n",num[i],n);
}
return 0;
}
还有,种子何解???
----------------解决方案--------------------------------------------------------
很感谢你提供的说明,但是我自己写了一段程序,却不能实现!
请看
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
int i,j,num[52],n;
time_t t;
n=0;
srand((unsigned) time(&t));
printf("Ten random numbers from 0 to 99\n");
for(i=0; i<52; i++)
{
num[i]=rand() % 53;
printf("%-4d",num[i]);
}
for (i =0 ; i < 51 ; i ++)
for (n=0,j =i+1; j <52 ; j++)
if (num[i] == num[j] )
{
n++;
printf("有相同的随机数!!! num=%d 有%d个 \n",num[i],n);
}
return 0;
}
还有,种子何解???
----------------解决方案--------------------------------------------------------
按说应该不会产生相同的随机数啊!
但是却产生了相同的随机数了,这个程序就为印证啊!
种子是什么意思??
----------------解决方案--------------------------------------------------------
看种子的意思
[CODE]
void srand(unsigned int seed)
{
next=seed;
}
int rand(void)
{
next=next*1103515245+12345;
return (unsigned int)(next/65536)%32768;
}
----------------解决方案--------------------------------------------------------
什么叫随机? 随机就有可能产生相同的!
----------------解决方案--------------------------------------------------------
那如果是这样的话,我该如何编写这样的洗牌问题???
----------------解决方案--------------------------------------------------------