【发布时间】:2018-01-04 16:10:58
【问题描述】:
我想随机播放一个整数数组,该数组已排序,其大小为 n,值为 1 - n。 我只是想避免使用 while 循环以确保 rand() 不会给我相同的索引。 代码看起来像这样:
void shuffleArr(int* arr, size_t n)
{
int newIndx = 0;
int i = 0;
for(; i < n - 1; ++i)
{
while((newIndx = i + rand() % (n - i)) == i);
swap(i, newIndx, arr);
}
}
for 循环一直持续到 n-1,因此例如在最后一次运行中,它有 50/50 的机会等于 i。我想避免这种想法。
【问题讨论】:
标签: c loops random while-loop shuffle