c语言怎样避免随机变量重复,C语言产生指数分布的随机数,随机库存问题实验...

库存系统不仅包括一般意义下的仓库储存系统,如商品和器材的库存管理、水库库存水量和国家矿产储备等,还包括诸如人才储备及管理广义库存系统。

一般库存系统可分为两大类,一类交确定性库存系统,另一类叫随机系统。顾客的需求也可以分成确定性的需求和随机需求两种评价库存策略的好坏一般用“费用”高低来衡量,库存的“费用”包括以下几个方面:

1.

保管费,包括仓库,设备,人力,货物保存,损坏变质等支出的费用,一般可折算每件每日或每月的消耗费用。

2.

订货费,包括货物本身价格费用,订货手续费,运费及各种额外开支。

缺货损失费,由于货物不足,供不应求而错过销售机会或停工待料造成的损失,这也包括无法估价的信誉损失等。

这里我主要想分析随机库存,确定性库存比较简单,随机库存要复杂得多,需求随机,需求时间也是随机的,到货时间也是随机的。其中,到货时间是均匀分布,需求量当然也是均匀分布,而需求时间则是指数分布函数。

建立模型:需求时间随机变量服从均值为0.1个月的指数分布概率密度函数为:D(m)= -0.1 ln

u(u为0到1之间的随机数)

其中Dm为需求时间间隔。

好的,下面贴出代码:

#include

#include

#include

#include

int unknowday()

{

int d,z = 0,y = 0,x = 0,v =

0;

double i,p,q;

do{

i = rand()/(RAND_MAX +

1.0);

p = 1/i;q = log10(p);d =

(int)(q * 30 * 0.1);

}while(d > 30);

return d;

}

int needs()

{

double i;

i = rand()/(RAND_MAX +

1.0);

if(i <= 0.167)

return 1;

if(i > 0.167 && i

<= 0.5)

return 2;

if(i > 0.5 && i

<= 0.833)

return 3;

else

return 4;

}

void main()

{

int month,day,needtime,total

= 0,keep = 0,lose = 0,book = 0,stock = 0,i,days,bookfee = 0,k

=1;

int up[9] =

{40,60,80,100,60,80,100,80,100},down[9] =

{20,20,20,20,40,40,40,60,60};

int need;

//down为上限,每天的保管费为1元,进货每件3元,进货附加费500

//keep为保管费,lose为缺货损失费,up为下限,缺货损失每件2元

//book为订货量,stock为库存量,needtime为订货到入库时间

//need为需求量,

printf("每天的保管费为1元,进货每件3元\n进货附加费500,缺货损失每件2元\n----------------------------------\n");

srand((unsigned)time(NULL));

for(i = 0;i < 9;i ++)

//9次模拟

{

for(month = 0;month <

120;month ++) //一次模拟

{

day = 0;

if(stock <

down[i])

{

book = up[i] -

stock;

bookfee = bookfee + book * 3

+ 500;

k = 0;

}

needtime =

(int)(rand()/(double)RAND_MAX*15+ 15);

days = day + unknowday(); //

unknowday()需求时间间隔

do

{

if(needtime == day&&k

== 0)

{

stock = stock +

book;

k = 1;

}

if(day == days)

{

need = needs();

if(stock >=

need)

{

stock = stock - need;

//需求量

}

else

{

stock = 0;

lose = lose +(need -

stock)*2; //缺货损失费

}

days = day + unknowday() + 1;

// unknowday()需求时间间隔

need = 0;

}

keep = keep + stock*1;

//保管费

day ++;

}while(day <=

30);

needtime = 0;

}

printf("第%d次模拟\n平均订货费:%d

平均保管费:%d  平均缺货损失费:%d

\n",i+1,bookfee/120,keep/120,lose/120);

// printf("总订货费:%d

总保管费:%d

总缺货损失费:%d\n总费用:%d\n-----------------------------------------------------\n",bookfee,keep,lose,bookfee

+ keep + lose);

bookfee = 0;book = 0;month =

0;lose = 0;keep = 0,total = 0;

}

}

运行结果正常,只是也许我定的价格方面不是很合适,所以当我想要计算利润时,总会是负数,因为在货物的保管费方面我定的价格真的是太高了。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值