黑马程序员技术交流社区

标题: 这个答案完全没看懂什么意思啊,有谁能解释解释么 [打印本页]

作者: Abuzzworld    时间: 2015-10-4 14:01
标题: 这个答案完全没看懂什么意思啊,有谁能解释解释么
13.
/*
有1000000个数,每个数取值范围是0-999999,找出其中重复的数。
*/

  1. #define COUNT 1000000

  2. int main(void)
  3. {
  4.     int a[COUNT] = {0};
  5.     for (int i = 0; i < COUNT; i++) {
  6.         int number = arc4random_uniform(COUNT)%COUNT;
  7.         //把随机数作为下标,值作为出现次数
  8.         a[number - 1] ++;
  9.     }
  10.     //输出 重复的数字以及重复次数
  11.     for(int i = 0 ;i < COUNT;i++){
  12.         if (a[i] > 1) {
  13.             printf("%d repeats %d times\n",i+1,a[i]);
  14.         }
  15.     }
  16.     return 0;
  17. }
复制代码




作者: Abuzzworld    时间: 2015-10-4 14:16
int number = arc4random_uniform(COUNT)%COUNT;

用笔哗啦哗啦已经明白的差不多了,但还是不明白中产生随机数的时候为什么要%一下啊
作者: 超の    时间: 2015-10-4 18:32
那个随机数的函数我怎么用不了啊
作者: 洪吉童    时间: 2015-10-4 19:07
求不求与是不是都一样
作者: 杰杰    时间: 2015-10-4 19:30
超の 发表于 2015-10-4 18:32
那个随机数的函数我怎么用不了啊

随机数的函数需要导入stdlib.h头文件吧。
作者: 大宝820    时间: 2015-10-4 23:21
没看懂{:2_39:}

作者: 堕落天使    时间: 2015-10-5 09:42
超の 发表于 2015-10-4 18:32
那个随机数的函数我怎么用不了啊

随机数函数要导入头文件的
#include<stdlib.h>
作者: 浩润2015    时间: 2015-10-5 18:48
//有1000000个数,每个数取值范围是0-999999,找出其中重复的数
#include<stdio.h>
#include<stdlib.h>//使用随机函数需要导入本头文件
#define N 1000000

int main()
{
        int arr[N]={0};
        int num,i;//随机数变量

        for(i=0;i<N;i++)
        {
         num=arc4random_uniform(N)%N;//生成0-999999范围间的随机数
                 arr[num]++;//计算某个随机数出现的次数
        }
       
        //遍历数组显示重复数出现的次数
        for(i=0;i<N;i++)
        {
                if(arr[i]>1)
                printf("%d出现%d次数",num,arr[i]);
        }

        return 0;
}

作者: ww1234    时间: 2015-10-6 21:55
OK,看明白了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2