srand(time(NULL));
这一行放在do的上面一行,而不是里面
我可以提供以下解决方案:
首先,在使用随机数函数前需要先设置随机数发生器的种子。可以使用srand函数设置种子,一般可以使用time()函数获取当前时间作为种子,确保每次运行程序时生成不同的随机数序列。
然后,在循环内部使用rand()函数生成随机数。由于rand()函数的返回值是一个伪随机数,需要使用取模运算符(%)限定随机数的范围,例如生成1-100之间的随机数可以使用rand() % 100 + 1。
为了确保每次生成的随机数不重复,可以使用数组记录已经生成过的随机数,在每次生成随机数时进行判断是否与数组中已有的随机数重复。如果重复,则重新生成随机数直到不重复为止。
下面是一个示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i, j, temp;
int nums[6] = {0}; // 用来记录已经生成的随机数
srand(time(NULL)); // 设置随机数发生器的种子为当前时间
for (i = 0; i < 6; i++) {
do {
temp = rand() % 100 + 1; // 生成1-100之间的随机数
for (j = 0; j < i; j++) {
if (nums[j] == temp) {
break; // 如果与已有的随机数重复则重新生成
}
}
} while (j < i);
nums[i] = temp;
}
// 打印生成的随机数
for (i = 0; i < 6; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
在上面的代码中,使用了一个do-while循环来确保每次生成的随机数不重复,如果生成的随机数与已有的随机数重复,则重新生成。在每次生成随机数后,将其记录在数组中,以便下次生成时进行判断。最后打印生成的随机数。