所以基本上我在C中编写了这个函数,从1到50生成5个随机数:
#include <stdio.h>
#include <stdlib.h>
int main() {
int c, n;
printf("Five random numbers from 1 to 50 \n");
for (c = 1; c <= 5; c++) {
n = rand()%50 + 1;
printf("%d\n", n);
}
return 0;
}
我想知道如何确定此代码生成的数字彼此不同。
任何帮助?
答案 0 :(得分:1)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int i, c, n, size = 50;
int data[size];
srand(time(NULL));
for(i=0;i<size;++i)
data[i] = i+1;
printf("Five random numbers from 1 to 50 \n");
for (c = 1; c <= 5; c++) {
n = rand()%size;
printf("%d\n", data[n]);
swap(&data[--size], &data[n]);
}
return 0;
}
答案 1 :(得分:0)
将每个数字存储在一个数组中,并根据现有条目检查每个新的随机数。
答案 2 :(得分:0)
您应该检查所有这样的数字:
#include <time.h>
int randomNumbers[5];
int c, d, n;
bool itIsNew;
//current time as random seed
srand(time(0));
for (c = 1; c <= 5;)
{
n = rand() % 50 + 1;
itIsNew = true;
for(d = 1; d <= c; d++)
{
if(n == randomNumbers[d - 1])
{
itIsNew = false;
break;
}
}
if(itIsNew)
{
randomNumbers[c - 1] = n;
c++;
}
}