A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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. }
复制代码



8 个回复

倒序浏览
int number = arc4random_uniform(COUNT)%COUNT;

用笔哗啦哗啦已经明白的差不多了,但还是不明白中产生随机数的时候为什么要%一下啊
回复 使用道具 举报
那个随机数的函数我怎么用不了啊
回复 使用道具 举报
求不求与是不是都一样
回复 使用道具 举报
超の 发表于 2015-10-4 18:32
那个随机数的函数我怎么用不了啊

随机数的函数需要导入stdlib.h头文件吧。
回复 使用道具 举报
没看懂{:2_39:}
回复 使用道具 举报
超の 发表于 2015-10-4 18:32
那个随机数的函数我怎么用不了啊

随机数函数要导入头文件的
#include<stdlib.h>
回复 使用道具 举报
//有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:52
9#
OK,看明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马