C语言:用rand函数 产生1到10范围内的随机数的问题,有点地方求教 10

要用rand()产生范围是1-10的随机数10个,count[10]={0};count[rand()%10+1]++;//可是这一句,count最大只能到count[9... 要用rand()产生范围是1-10的随机数10个,count[10]={0};count[rand()%10+1]++;//可是这一句,count最大只能到count[9],无法统计10出现的次数,这个怎么办啊?

我总结一下我的问题:
rand每次产生数字的范围是:1~10中的任意一个。count[10]的下标范围是:count[0]~count[9]我想用这个句子来统计1~10中每个数字出现的次数:count[rand()%10+1]++;也就是count数组来统计从1~10这10个数字,每个数字出现的次数。
展开
 我来答
与子如初见
推荐于2017-11-24 · TA获得超过1638个赞
知道小有建树答主
回答量:1117
采纳率:100%
帮助的人:801万
展开全部
这样写,count[10] = {0};
int n ;
while(1)
{
    n = random();
    if(n%10 == 0 )
        count[9]++;
    else
        count[n%10-1]++;//注意count的下标是n%10-1不是n%10+1
}
追问
用if条件把原本产生的随机数0~9中的0归类为count[9]++;
剩下的1~9都减一,下标汇总为:0~8,那么最后还是0~9的下标统计啊。
除非把随机数产生的下标count[0]~count[9]一一对应为 针对 1-10中的每个数的出现此处的统计。
不知道我这样说的对不对
追答
你看if中的是n对10取余为0,那么n肯定是10的倍数,但是你要知道数组的下标是从0开始的,也就是说用count[0]统计1出现的次数,count[1]统计2出现的次数,....以此类推就好,用count[9]统计10出现的次数。使用的时候你注意点就行了。
songtebo
2013-12-30 · TA获得超过230个赞
知道小有建树答主
回答量:284
采纳率:0%
帮助的人:93.7万
展开全部
count[rand()%10]++ 就行

count[0]中为1出现的次数
count[1]中为2出现的次数
...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2013-12-30 · TA获得超过8611个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3498万
展开全部

设有整数M和N,0 < M < N,欲生成 M <= n <= N,则有

n = rand()%(N - M + 1) + M;

/*

2:1

4:4

5:1

7:3

8:1


Press any key to continue

*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define M 1
#define NM 10
 
int main() {
    int i,a[NM + M] = {0};
srand((unsigned)time(NULL));
    for(i = 0; i < NM; ++i)
++a[rand()%(NM - M + 1) + M];
    for(i = M; i < NM; ++i)
        if(a[i]) printf("%d:%d\n",i,a[i]);
    printf("\n");
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式