作者ychch (GG)
看板C_and_CPP
标题Re: [问题] C语法的乱数问题
时间Tue Oct 20 00:44:58 2009
※ 引述《NGboy (今天我NG了)》之铭言:
: 初学者的一个问题,在1~49个数当中乱数选取且可以重复,选出来的值总和不能超过
: 360
: 小弟我却只能写出产生49个乱数且每个数字不会超过360,但就是不知道该怎麽写出
: 列出几个乱数然後计算总和不会超过360
: 下面是我写的程式码,或许有些地方有些错误,也烦请指教一番,谢谢:D
: 有大大说我解释的不清楚,那我举例子看看是否会比较清楚: 譬如说...
: 第一次乱数产生5个数字: 100,50,25,75,22 这五个数字不超过360
: 第二次乱数产生7个数字: 150,88,17,39,11,12,77,1 这七个数字不超过360
: 大致结果是这样子的,小弟我卡在不懂该如何写出上述的这些结果Orz
: #include <stdio.h>
: #include <stdlib.h>
: #include <time.h>
: void Rand_MS(void) {
: int MS[49], i;
: srand(time(NULL));
: for(i=1;i<50;i++)
: MS[i]=rand()%360+1;
: for(i=1;i<50;i++){
: printf("%d\n",MS[i]);
: }
: }
: int main(void)
: {
: Rand_MS();
: return 0;
: }
感觉题目应该是不限几个…所以改写一下你的Rand_MS function
void Rand_MS(void) {
: int MS[360], i;
int index,sum,rn;
: srand(time(NULL));
sum=0;
: for(i=0;i<360;i++)
{
: rn=rand()%49+1;
sum=sum+rn;
if (sum<360)
MS[i]=rn;
else
{
index=i;
break;
}
}
: for(i=0;i<index;i++){
: printf("%d\n",MS[i]);
: }
: }
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.113.229
※ 编辑: ychch 来自: 118.169.113.229 (10/20 00:47)
1F:→ NGboy:谢谢ychch大的指教 大致上明白了! 10/20 00:57