关于C语言随机数问题
关于C语言随机数问题#include<stdio.h>#include<stdlib.h>voidmain(){inti,a[100],all,n,left=0,num=...
关于C语言随机数问题#include<stdio.h>
#include<stdlib.h>
void main()
{
int i,a[100],all,n,left=0,num=0,k=0;
printf("请输入红包金额:\n");
scanf("%d",&all);
printf("请输入红包个数:\n");
scanf("%d",&n);
for(i=1;i<n;i++)
{
a[i]=("%d",rand()%(all-num));
num=num+a[i];
printf("%d\n",a[i]);
}
a[i]=all-num;
printf("%d\n",a[i]);
}
这段代码运行,为什么会有a[i]=0的情况。 展开
#include<stdlib.h>
void main()
{
int i,a[100],all,n,left=0,num=0,k=0;
printf("请输入红包金额:\n");
scanf("%d",&all);
printf("请输入红包个数:\n");
scanf("%d",&n);
for(i=1;i<n;i++)
{
a[i]=("%d",rand()%(all-num));
num=num+a[i];
printf("%d\n",a[i]);
}
a[i]=all-num;
printf("%d\n",a[i]);
}
这段代码运行,为什么会有a[i]=0的情况。 展开
2个回答
展开全部
//当rand()产生的随机数刚好能整除(all-num)时,rand()%(all-num)的结果就是0啊。
//下面是一个新的
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int i,t,all,n;
srand(time(NULL));
printf("请输入红包金额:");
scanf("%d",&all);
printf("请输入红包个数:");
scanf("%d",&n);
for(i=1;i<n;i)
{
t=rand()%all;
//all-t>=n-i的作用是确保剩下的n-i个红包至少每个还可以封1元
if(t!=0 && all-t>=n-i)
{
all-=t;
printf("%d\n",t);
i++;
}
}
printf("%d\n",all);
}
//下面是一个新的
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int i,t,all,n;
srand(time(NULL));
printf("请输入红包金额:");
scanf("%d",&all);
printf("请输入红包个数:");
scanf("%d",&n);
for(i=1;i<n;i)
{
t=rand()%all;
//all-t>=n-i的作用是确保剩下的n-i个红包至少每个还可以封1元
if(t!=0 && all-t>=n-i)
{
all-=t;
printf("%d\n",t);
i++;
}
}
printf("%d\n",all);
}
2018-04-24
展开全部
当rand( )生成的随机数正好等于 all-num的时候, rand( )%(all-num)就等于0了啊.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询