【发布时间】:2019-03-12 12:43:10
【问题描述】:
我正在编写一个函数,该函数应该使用从 0 到 n 的随机数填充数组(其中 n 被传递给函数的参数),但数组中的所有数字都应该是唯一的。我基本上需要将数字数组从 0 改组到 n
我在这里找到了这个答案:Unique random numbers in an integer array in the C programming language
并使用了用户建议的“Knuth算法”:
void generate_random_array(int count)
{
int in, im;
im = 0;
srand(time(NULL));
for (in = 0; in < count && im < count; ++in) {
int rn = count - in;
int rm = count - im;
if (rand() % rn < rm) random_array[im++] = in;
}
}
然而,这个函数根本不会为我生成随机数,它只是创建一个从 0 到计数的数字数组。如何生成唯一数字的实际随机序列。
【问题讨论】: