【发布时间】:2014-06-10 16:59:30
【问题描述】:
我想写一个程序,每次运行时打印出10个随机数,打印出的随机数应该是1-10,而且它们不应该重复。
更新:很抱歉没有说明确切的问题,基本上,假设只有在尚未使用随机数时才重新分配随机数的 while 循环导致我的程序根本不打印任何内容。如果我注释掉整个while循环并将printf留在底部,它会打印出1-10之间的10个随机数,但它只会打印出重复。
谁能告诉我如何修复我的代码或给我一些提示?
#include <stdio.h>
#include <time.h>
int main()
{
int array[10];
int x, p;
int count;
int i=0;
srand(time(NULL));
for(count=0;count<10;count++){
array[count]=rand()%10+1;
}
while(i<10){
int r=rand()%10+1;
for (x = 0; x < i; x++)
{
if(array[x]==r){
break;
}
if(x==i){
array[i++]=r;
}
}
}
for(p=0;p<10;p++){
printf("%d ", array[p]);
}
return 0;
}
【问题讨论】:
-
搜索
Linear Feedback Shift Registers (LFSR)或Pseudo Random Number Generator (PRNG) -
同样在你的代码中,你也可以在第二个
rand()之前使用srand()。 -
请提及您遇到的问题。
-
听起来你需要shuffle 的值,然后遍历洗牌集。