是否有一种理智的单元测试随机过程的方法?例如,假设您已为特定系统模型编写了模拟器.模拟器基于rng的种子随机工作,因此无法预测系统的状态,并且如果每次测试都可以在系统尝试测试任何类的方法之前将系统置于特定状态.有一个更好的方法吗?
我们需要模拟不稳定的网络连接以尝试调试我们的服务器/客户端应用程序中的一些连接问题,我想知道是否有任何程序可以模拟这些条件,例如在微弱的无线网络上.
我不只是指降低带宽,还降低可靠性,频繁开关,短时断线连接等.
我已经做了几年的面向对象编程,而且我没有做太多的函数式编程.我对飞行模拟器感兴趣,并对Lisp的函数编程方面感到好奇.飞行模拟器或任何其他真实世界的模拟器在面向对象的范例中对我有意义.
这是我的问题:
面向对象是表示真实世界模拟域的最佳方式吗?
我知道Common Lisp有CLOS(OO for lisp),但我的问题是关于用函数式语言编写飞行模拟器.因此,如果您要在Lisp中编写它,您会选择使用CLOS还是以函数方式编写它?
有没有人对使用lisp或任何功能语言编写飞行模拟器进行编码?
更新11/8/12 - 对于那些感兴趣的人来说类似的问题 - > 函数式编程如何应用于模拟?
我公司目前运行第三方仿真程序(自然灾难风险建模),从磁盘上吸取数GB的数据,然后压缩几天以产生结果.我很快就会被要求将其重写为一个多线程应用程序,以便它可以在几小时而不是几天内运行.我希望有大约6个月的时间来完成转换,并将独自工作.
我们有一个24-proc框来运行它.我可以访问原始程序的源代码(我认为用C++编写),但是在这一点上我对它的设计知之甚少.
我需要有关如何解决这个问题的建议.我是一名经验丰富的程序员(约30年,目前在C#3.5工作),但没有多处理器/多线程经验.如果合适的话,我愿意并渴望学习一门新语言.我正在寻找有关语言,学习资源,书籍,建筑指南的建议.等等
要求:Windows操作系统.商业级编译器,提供大量支持和良好的学习资源.不需要花哨的GUI - 它可能从配置文件运行并将结果放入SQL Server数据库.
编辑:当前的应用程序是C++但我几乎肯定不会使用该语言进行重写.我删除了某人添加的C++标记.
我想创建一个工厂车间的模拟,我正在寻找有关如何做到这一点的想法.到目前为止我的想法是:
•工厂由一系列流程组成,其中一些流程是串联的,一些是并行的.每个进程都会与它的上游和下游以及并行邻居进行通信,让他们知道它的通过
•每个流程都有自己的基本属性,如最大吞吐量,吞吐量导致的维护成本
显然我还没有完全想到这一点,但我希望有人能够给我一些想法或者可能是一个在线资源的链接
更新:这个项目仅供我自己娱乐,也许可以学习一点点.我不是一名程序员,编程对我来说只是一种爱好.我决定用C#编写它.
我目前正在寻找为C++编写的离散事件模拟器.我在网上找不到很多以OO风格写的东西; 有一些,但过时了.其他一些东西,比如Opnet,Omnet和ns3,对于我需要做的事情来说太复杂了.此外,我需要模拟能够模拟数千个节点系统的基于代理的算法.
有人知道任何适合我需要的东西吗?
我正在建立一个离散事件模拟器.维基百科提到有几个通用优先级队列可以在DES中使用.具体来说,它提到日历队列是一个很好的结构.我找到了一个提到日历队列的pdf(从1988年开始),但在大多数情况下我找不到任何关于它们的内容.有人会介意解释什么是Calendar Queue,它们是如何使用的,以及我可能会在哪里找到示例实现?
language-agnostic algorithm simulation priority-queue data-structures
我正试图在我的基于瓷砖的2D平台上添加半真实的水.水必须有点栩栩如生,压力模型完全局部运行.(IE.只能使用靠近它的单元格中的数据)由于我的游戏性质,你不能确定你需要的数据不在内存不在的区域内,因此需要这个模型.
到目前为止,我已尝试过一种方法,但我无法对其进行精炼以适应我的约束.
对于该模型,每个细胞将是轻微可压缩的,这取决于上述细胞中的水量.当细胞的含水量大于正常容量时,细胞会尝试向上扩展.这创造了一个相当不错的模拟,速度慢(不滞后;水中的变化需要一段时间来传播.),有时.当我试图将它实现到我的引擎中时,我发现我的局限性缺乏其工作所需的精度.如果您愿意,我可以提供更深入的解释或原始概念的链接.
我的约束:
我使用的语言是C#,但我可以使用其他语言并将其翻译为C#.
问题是,有人能给我一个水压力模型,尽可能地遵循我的约束吗?
我正在编写一个客户端模拟程序,其中所有模拟客户端都针对服务器运行一些预定义的例程 - 这是一个在具有四个实例的azure中运行的Web服务器.
连接到服务器后,所有模拟客户端都运行相同的例程.
在任何时候,我都希望使用我的程序模拟300到800个客户端.
我的问题是:我应该创建N个客户端类实例并在N个不同的线程中运行它们吗?要么
我应该使用任务库来做这些事吗?
在一次采访中,我最初使用笔/纸解决了以下问题,然后通过程序验证结果.
问题如下:
有三个人A,B和C.每个人能够分别以6/7,4/5和3/4的概率击中目标.如果他们每次开火一次,他们中的两个会击中目标的几率是多少?
答案是:
P(...) = P(A)*P(B)*(1-P(C)) +
P(B)*P(C)*(1-P(A)) +
P(C)*P(A)*(1-P(B))
= 27.0/70.0
= 38.57142857142857142857142857142857142857....%
Run Code Online (Sandbox Code Playgroud)
以下是我对问题的解决方案:
#include <cstdio>
#include <cctype>
#include <ctime>
#include <random>
int main()
{
std::mt19937 engine(time(0));
engine.discard(10000000);
std::uniform_real_distribution<double> uniform_real(0.0,1.0);
double prA = (6.0 / 7.0);
double prB = (4.0 / 5.0);
double prC = (3.0 / 4.0);
std::size_t trails = 4000000000;
std::size_t total_success = 0;
for (std::size_t i = 0; i < trails; ++i)
{
int current_success = 0;
if (uniform_real(engine) < prA) ++current_success;
if (uniform_real(engine) < …Run Code Online (Sandbox Code Playgroud) simulation ×10
c# ×3
algorithm ×2
c++ ×2
agent ×1
architecture ×1
java ×1
lisp ×1
math ×1
performance ×1
unit-testing ×1