伯劳fat 发表于 2020-5-19 15:42:06

小甲鱼第31课课后作业求助

想问一下小甲鱼第31课课后作业,这是一个洗牌的函数, index = rand() % (length - i) + i;是什么意思,我令index=rand()%length出来的结果也是不同的随机数,结果不变啊
void shuffle(int array[], int length)
{
      int index, temp, i;

      srand(time(NULL));
      for (i = 0; i < length; i++)
      {
                index = rand() % (length - i) + i;
                if (index != i)
                {
                        temp = array;
                        array = array;
                        array = temp;
                }
      }
}

qiuyouzhi 发表于 2020-5-19 15:44:27

加上i或许能再随机一点?

liuzhengyuan 发表于 2020-5-19 17:27:35

为了给定某个范围

伯劳fat 发表于 2020-5-19 20:11:58

liuzhengyuan 发表于 2020-5-19 17:27
为了给定某个范围

什么范围,范围最后还是0~54啊,还是length的长度

liuzhengyuan 发表于 2020-5-19 20:16:17

伯劳fat 发表于 2020-5-19 20:11
什么范围,范围最后还是0~54啊,还是length的长度

如果 i 为 2,那就不会有零的情况
页: [1]
查看完整版本: 小甲鱼第31课课后作业求助