----------------解决方案--------------------------------------------------------
生成随机数以后加个if判断是否和已生成的相通.相通则抛弃这个成成的随机数,重新生成
----------------解决方案--------------------------------------------------------
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
#define N 9
#define M 20
void main()
{
int i,j=0;
int num[N];
printf("随机数是:");
srand((unsigned)time(0));
for (i=0;i<N;i++)
{
num[i]=rand()%M;
}
for (i=0;i<N;i++)
{
if(num[j]==num[i])
{
num[j]=rand()%M;
}
j++;
}
for (i=0;i<N;i++)
{
printf ("%d\t",num[i]);
}
printf ("\n");
}
还是不会......555555......
----------------解决方案--------------------------------------------------------
试着写了一个程序,运行通过
#include<stdio.h>#include<stdlib.h>
#include<time.h>
int main()
{
int m,n[20];
printf("请输入您需要出现的20位以内随机数个数:\n");
scanf("%d",&m);
if(m<=20)
{
fh:srand(time(NULL));
for(m=1;m<=20;m++)
{
n[m]=rand();
if(n[1]!=n[m+1])
printf("NO.%2d个随机数:%d\n",m,n[m]);
else
goto fh;
}
}
else
printf("您输入的数字过大!");
getch();
}
在TC下运行通过,也不知道在别的编译器下是否可以,请各位帮试试。
[[it] 本帖最后由 菜鸭 于 2008-1-30 11:37 编辑 [/it]]
----------------解决方案--------------------------------------------------------
srand 和rand一起用
srand((signed) time(0)); for(i=0; i<10; i++)
printf("%d\n", rand() % 10);
在10以内随机取值!
----------------解决方案--------------------------------------------------------
不行啊 不知道怎么做..
----------------解决方案--------------------------------------------------------
回复 16# 的帖子
哥们呀,上面已经回复了程序了,自己理解之后,参考着自己写一个吧。你不能让大家帮你把题做得跟习题要求一样,然后你抄一遍就可以了吧?那样你永远也不会自己编程序的。吃饭要自己吃,不要总想着别人喂吧~
----------------解决方案--------------------------------------------------------
呵呵 我吃的是C++
----------------解决方案--------------------------------------------------------
这样写就可以了!
//产生10个不重复的随机数#include"stdio.h"
#include"stdlib.h"
#include"time.h"
int a[10];//产生10个随机数
void lessen(int m,int k)
{
int i,j;
for(i=m;i<k;i++)//控制不产生重复的随机数
{
a[i]=a[i+1];
}
}
void main()
{
int k,r=0,m;
srand((unsigned)time(NULL));
for(k=0;k<100;k++)//用来控制随机数的范围
{
a[k]=r;
r=r+1;
}
for(int i=1;i<=10;i++) //产生10个随机数
{
m=rand()%k;
printf("%d\n",a[m]);
lessen(m,k);
k--;
}
printf("\n");
}
----------------解决方案--------------------------------------------------------
/* 产生10个不同的随机数
其实现是对与以产生的随机数进行比较 */
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define MAX 10
int main(void)
{
int i, j, temp;
int ar[MAX];
i = 0;
while(i < MAX)
{
temp = rand();
for(j = 0; j <= i; j++)
{
if(temp == ar[j])
break;
}
if(i == 0 || temp != ar[j])
{
ar[i] = temp;
printf("%d ", temp);
++i;
}
}
getchar();
return 0;
}
[[it] 本帖最后由 cosdos 于 2008-2-16 13:52 编辑 [/it]]
----------------解决方案--------------------------------------------------------