介绍:本例子所在linux RHEL6.0平台开发,所标准的C语言开发,所以很容易移植。
此历程运行时,需要指定产生随机数的范围和要产生随机数的数量,如:1 20 10,即为在
1 ~ 20的范围内产生10个随机数。
程序:
/*
* filename:getrandam.c
* function:to get n randams in x ~ y
* argumnet:x y n
* engineer:leo
*/
// include system head files
#include
#include // for rand()
#include // for time()
// declare functions
int cmp(const void *, const void *);
int main(int argc, char *argv[])
{
if (argc < 4) {
fprintf(stderr, "Lack of necessary parameters!\n");
exit(-1);
}
int x = atoi(argv[1]);
int y = atoi(argv[2]);
int n = atoi(argv[3]);
if (n > (y - x + 1)) {
fprintf(stderr, "The number of randams out of range!\n");
exit(-2);
}
int randam[n];
int i = 0;
int j = 0;
srand((unsigned int)time(NULL));
for (i = 0; i < n; i++) {
randam[i] = rand() % (y - x + 1) + x;
for (j = 0; (j < i) && (i != 0); j++) {
while (randam[j] == randam[i]) {
randam[i] = rand() % (y - x + 1) + x;
j = 0; // rejudge
}
}
}
qsort(randam, n, sizeof(randam[0]), cmp);
for (i = 0; i < n; i++) {
printf("%d ", randam[i]);
}
printf("\n");
return 0;
}
int cmp(const void *a, const void *b)
{
return (*(int *)a - *(int *)b);
}
有任何疑问可以向我咨询,位们大家一起讨论,共同进步!~