算法Sedgewick第四版-第1章基础-024-M/M/1 queue
/******************************************************************************
* Compilation: javac MM1Queue.java
* Execution: java MM1Queue lambda mu
* Dependencies: Queue.java Histogram.java
*
* Simulate an M/M/1 queue where arrivals and departures are Poisson
* processes with arrival rate lambda and service rate mu.
*
* % java MM1Queue .20 .33
*
* % java MM1Queue .20 .25
*
* % java MM1Queue .20 .21
*
*
* Remarks
* -------
* - We assume the interrarrival and service times are independent.
*
*
******************************************************************************/ public class MM1Queue { public static void main(String[] args) {
double lambda = Double.parseDouble(args[0]); // arrival rate
double mu = Double.parseDouble(args[1]); // service rate Queue<Double> q = new Queue<Double>(); // arrival times of customers
double nextArrival = StdRandom.exp(lambda); // time of next arrival
double nextDeparture = Double.POSITIVE_INFINITY; // time of next departure // histogram object
Histogram hist = new Histogram(60); // simulate an M/M/1 queue
while (true) { // it's an arrival
if (nextArrival <= nextDeparture) {
if (q.isEmpty()) nextDeparture = nextArrival + StdRandom.exp(mu);
q.enqueue(nextArrival);
nextArrival += StdRandom.exp(lambda);
} // it's a departure
else {
double wait = nextDeparture - q.dequeue();
StdOut.printf("Wait = %6.2f, queue size = %d\n", wait, q.size());
hist.addDataPoint(Math.min(60, (int) (Math.round(wait))));
hist.draw();
if (q.isEmpty()) nextDeparture = Double.POSITIVE_INFINITY;
else nextDeparture += StdRandom.exp(mu); }
} } }
算法Sedgewick第四版-第1章基础-024-M/M/1 queue的更多相关文章
- 算法Sedgewick第四版-第1章基础-001递归
一. 方法可以调用自己(如果你对递归概念感到奇怪,请完成练习 1.1.16 到练习 1.1.22).例如,下面给出了 BinarySearch 的 rank() 方法的另一种实现.我们会经常使用递归, ...
- 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-001选择排序法(Selection sort)
一.介绍 1.算法的时间和空间间复杂度 2.特点 Running time is insensitive to input. The process of finding the smallest i ...
- 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-007归并排序(自下而上)
一. 1. 2. 3. 二.代码 package algorithms.mergesort22; import algorithms.util.StdIn; import algorithms.uti ...
- 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-006归并排序(Mergesort)
一. 1.特点 (1)merge-sort : to sort an array, divide it into two halves, sort the two halves (recursivel ...
- 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-005插入排序的改进版
package algorithms.elementary21; import algorithms.util.StdIn; import algorithms.util.StdOut; /***** ...
- 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-004希尔排序法(Shell Sort)
一.介绍 1.希尔排序的思路:希尔排序是插入排序的改进.当输入的数据,顺序是很乱时,插入排序会产生大量的交换元素的操作,比如array[n]的最小的元素在最后,则要经过n-1次交换才能排到第一位,因为 ...
- 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-002插入排序法(Insertion sort)
一.介绍 1.时间和空间复杂度 运行过程 2.特点: (1)对于已排序或接近排好的数据,速度很快 (2)对于部分排好序的输入,速度快 二.代码 package algorithms.elementar ...
- 算法Sedgewick第四版-第1章基础-1.3Bags, Queues, and Stacks-001可变在小的
1. package algorithms.stacks13; /******************************************************************* ...
- 算法Sedgewick第四版-第1章基础-1.4 Analysis of Algorithms-005计测试算法
1. package algorithms.analysis14; import algorithms.util.StdOut; import algorithms.util.StdRandom; / ...
- 算法Sedgewick第四版-第1章基础-1.4 Analysis of Algorithms-002如何改进算法
1. package algorithms.analysis14; import algorithms.util.In; import algorithms.util.StdOut; /******* ...
随机推荐
- 用node.js可以开启静态服务 不需要借助apache 或者xampl
安装好了Node以及express,然后用express命令生成express架构, 目录结构下面有一个public页面, 把你的静态页面放到这个文件夹下, 通过npm start,开启服务就可以在浏 ...
- 二维码的扫描和生成--第三方开源--ZXing
ZXing的二维码功能的提取lib下载地址:https://github.com/xuyisheng/ZXingLib 1.扫描二维码: 我们扫描就是要用到这个CaptureActivity类,直接把 ...
- HTML中可以连接资源的标签集合
1.<a>标签,href属性指示链接的目标,可以是HTML也可以是内部css样式.<a href="http://www.w3school.com.cn"> ...
- MySQL 约束和数据库设计
1.MySQL 约束: 1.约束的概念: 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性. MySQL中,常用的几种约束: 约束类型: 非空 主键 唯一 外键 默认值 ...
- 配合Jenkins自动化构建,bat脚本(一)
C:\Windows\System32\inetsrv\appcmd.exe stop site ServiceIIS C:\Windows\System32\inetsrv\appcmd.exe s ...
- hdu4771 Stealing Harry Potter's Precious(DFS,BFS)
练习dfs和bfs的好题. #include<iostream> #include<cstdio> #include<cstdlib> #include<cs ...
- OSI七层与TCP/IP五层网络架构
OSI七层模型 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层 数据格式化,代 ...
- BZOJ - 1036 树的统计Count (树链剖分+线段树)
题目链接 #include<bits/stdc++.h> using namespace std; typedef long long ll; ,inf=0x3f3f3f3f; ],mx[ ...
- 一步一步使用webpack+react+scss脚手架重构项目
前几天做了一个项目:[node]记录项目的开始与完成——pipeline_kafka流式数据库管理项目:因为开发时间紧迫,浅略的使用了一下react,感觉这个ui库非常的符合我的口味,现在趁着有空闲时 ...
- 开启MySQL的sql语句记录
在开发的时候经常会想看一下MySQL最终执行的sql或者想保存sql记录,所以我们可以启用MySQL的sql记录功能. 开启方法:Linux下编辑MySQL的my.cnf文件,windows下编辑my ...