我现在做一个模仿文曲星上的一个“猜数字”的小游戏,其中有一步要生成4个不同的随机数,我想到两种方法:
 1:while(1)
    {
a=rand(10);//生成四个随机的个位数。
b=rand(10);
c=rand(10);
d=rand(10);
    if(a==b||a==c||a==d||b==c||b==d||c=d)      continue;
    else  exit;   
    }
  2: 
  while(1)
{
a=rand(10);
  if((b=rand(10)==a))    continue;
     else
       if(c=rand(10)==a||c==b)  continue;
       else
          if(d=rand(10)==a||d==b||d==c)   continue;
    exit;}
**我这段时间用的是VFP,C可能写得有差错,不过,意思错不了**
各位看一下这两个方法那个效率高一点,是不是和随机数的生成函数有关!

解决方案 »

  1.   

    a = rand(10);
    do
    {
        b = rand(10);
    }while (b == a);
    do
    {
        c = rand(10);
    }while (c == a || c == b);
    do
    {
        d = rand(10);
    }while (d == a || d == b || d == c);不过怀疑rand的使用……如果在一段时间内总是返回相同的一个数怎么办呢?
      

  2.   

    在C里确定需要一个种子,要用random(),我现在用VFP用多了(VFP里只用rand()就可以生成不是肯定相同的数字),忘改了。
      

  3.   

    我想要分析这两个算法的效率的话,关键是要看rand()函数执行一次比一次两个数的比较(例如:a==b),那个耗时多?