当前位置: 代码迷 >> C语言 >> 随机数
  详细解决方案

随机数

热度:417   发布时间:2008-01-28 20:09:53.0
哦..还在努力..试试
----------------解决方案--------------------------------------------------------
生成随机数以后加个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]]
----------------解决方案--------------------------------------------------------
  相关解决方案