我正在开发一个网络模拟器,其中数据包到达和传输尝试的事件遵循泊松分布。我对 Knuth 算法进行了改编:
\n\npublic class Poisson {\n\n private double \xce\xbb;\n private Random rand;\n\n /** Creates a variable with a given mean. */\n public Poisson(double \xce\xbb) {\n this.\xce\xbb = \xce\xbb;\n rand = new Random();\n }\n\n public int next() {\n double L = Math.exp(-\xce\xbb);\n double p = 1.0;\n int k = 0;\n\n do {\n k++;\n p *= rand.nextDouble();\n } while (p > L);\n\n return k - 1;\n\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我的规范规定节点使用泊松过程随机重新安排楼层。平均到达间隔时间呈指数分布,平均值 Ts = 2.5ms。我使用 \xce\xbb = 2.5 是否正确?
\n\n当我想举办新到货活动时,我会这样做:
\n\nEvent …Run Code Online (Sandbox Code Playgroud) 我正在为 VANET 运行 VEINS 模拟。有没有办法访问 OMNET++ 中特定时间模拟的汽车总数?(我正在尝试计算汽车之间交换的数据包数量,并且由于我正在广播它,所以我想将发送到的数据包相乘被模拟的车辆数量可以很好地指示收到的数据包数量应该有多少)。
我是在 modelsim 中使用 verilog 设计电路的初学者。我使用示例代码和教程来了解 modelsim 的工作原理。代码和测试平台编译没有任何问题,甚至测试平台模拟也没有任何错误,但输入和输出信号未显示在对象窗口中,并且不在实例菜单下。请为我描述如何找到它们并模拟波形。这是我的代码和测试台。D触发器的定义
// module D_FF with synchronous reset
module D_FF(q, d, clk, reset);
output q;
input d, clk, reset;
reg q;
// Lots of new constructs. Ignore the functionality of the
// constructs.
// Concentrate on how the design block is built in a top-down fashion.
always @(negedge clk or posedge reset)
if (reset)
q <= 1'b0;
else
q <= d;
endmodule
Run Code Online (Sandbox Code Playgroud)
D 的 T 触发器的定义
module T_FF(q, clk, reset);
output q;
input clk, reset; …Run Code Online (Sandbox Code Playgroud) 有两列,ID 和概率
ID probability
1 0.5
2 0.8
3 0.3
Run Code Online (Sandbox Code Playgroud)
我想模拟每个ID的疾病状态,0代表健康,1代表生病。每个ID生病的概率在第二列。
我努力了
df$sick <- rbinom(1,1,df$probability)
Run Code Online (Sandbox Code Playgroud)
但我要么得到全零,要么得到全1。我究竟做错了什么?预先感谢您的帮助!
我试图在 python 中模拟物理按键(即 F12),而不在 Windows 中引发 LowLevelKeyHookInjected (0x10) 标志。这样做的目的是在程序中触发一个动作,过滤掉模拟的键盘按键。该程序是一种辅助技术,为操作系统控制提供替代访问方法。
我尝试了很多选项,包括 SendKeys、pyauotogui、pynput、ctype 等...
如果我实际按下 F12,我可以触发适当的操作,但是,使用上述方法通过 python 模拟 F12 按下和释放不起作用。这是我尝试过的示例:
import pynput.keyboard import Key, Controller
import time
Keyboard = Controller()
keyboard.press(Key.f12)
time.sleep(.05)
keyboard.release(Key.f12)
Run Code Online (Sandbox Code Playgroud)
因此,它只是模拟按下 f12 键,等待 0.05 秒,然后释放该键。
我在 Windows 上运行 Python 3.6.6
提前感谢您的所有帮助!
我正在研究在 Modelica 的建筑库中开发的热水储存模型。使用Dymola通过Dassl模拟模型,我将模拟的时间步长从1s改为1200s,但是我没有看到模拟结果有任何变化。它与求解器有关吗?如果您能提供帮助,我将不胜感激。
我从小就一直有这样的疑问:
这是问题:
我尝试使用 R 为这种情况编写一个模拟:
original_data = data.frame(id = 1:100, state = "start")
number_fries_selected_in_first_flip = sample(1:100, 1, replace=F)
fries_selected_in_first_flip = sample(1:100, number_fries_selected_in_first_flip, replace=F)
Run Code Online (Sandbox Code Playgroud)
这就是我陷入困境的地方 - 如果我能以某种方式“标记”所选的炸薯条,我就可以以 50% 的概率为这些炸薯条分配“烧焦/完全煮熟”状态:
status <- c("perfectly cooked","burnt")
original_data$tagged_fries_status <- sample(status, number_fries_selected_in_first_flip, replace=TRUE, prob=c(0.5, 0.5))
Run Code Online (Sandbox Code Playgroud)
如果我能完成模拟,我可以将模拟扩展到第二次翻转、第三次翻转等。在模拟结束时(例如,5 次翻转后),我可以制作一个图表,显示烧焦的炸薯条数量与煮得很完美。然后,我可以多次重复模拟(例如1000次),并找出炸焦/完全煮熟的薯条的平均数量。
有人可以告诉我如何编写这个模拟吗?
谢谢你!
我正在学习 C++,并开始用 java 做一些我喜欢的事情。使用四叉树进行粒子模拟和聚集,以廉价地查找区域中的粒子。一切正常,但是当我使用四叉树从某个区域获取粒子时,速度非常慢(5000 次调用大约需要 1 秒)。
我尝试用数组替换向量并测量函数各个部分的执行时间。我是否犯了一些低级错误,例如不必要地复制对象等?我使用的是 5000 个粒子,我无法想象 1fps 是它能达到的最快速度。
根据请求的最小可重现示例的完整代码:
主程序
#include <string>
#include <iostream>
#include <random>
#include <chrono>
#include <thread>
#include <cmath>
#include "Particle.h"
#include "Quadtree.h"
// Clock
using namespace std::chrono;
using namespace std::this_thread;
// Global constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int desiredFPS = 30;
const int frameTimeMS = int(1000 / (double)desiredFPS);
const int numberOfParticles = 5000;
// Random number generation
std::random_device dev;
std::mt19937 …Run Code Online (Sandbox Code Playgroud) 我正在尝试复制此处发布的湖泊食物网络模型。该模型代表两条食物链(沿海与远洋),由顶级捕食者(鱼类)连接。我已经对模型进行了编码,但是当我在 2-3 个时间步长后运行它时,模型会生成NaN. 我已经多次检查我的代码,寻找括号等问题,但找不到问题。
如果我将fish初始丰度设置为 0,模型就会运行,所以我认为问题一定出在模型的鱼组件上。
以下是方程式:
Ap = 中上层资源,Z = 中上层浮游动物,Pp = 中上层捕食者,F = 鱼类,Al = 沿岸资源,I = 无脊椎动物,Pl = 沿岸捕食者。
这是我对模型进行编码的尝试:
library(deSolve)
# define the model
vade_2005_model <- function(Time, State, Pars){
with(as.list(c(State, Pars)), {
# pelagic components -----------------------------------------------
# resource
pel_res_dt <- (rPel * AP * (1 - (AP/(KT * q)))) - (aZP * ((Z * AP)/(AP + bZP)))
# zooplankton
pel_zoo_dt <- (ef * aZP * ((Z * AP)/(AP + bZP))) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用参数为 1 的指数分布生成 1000 个数字。
将种子值设置为 1 后,我尝试了rexp(1000, 1)和replicate(1000, rexp(1, 1)),但是得到的两个向量的中位数不同。
我预计这两个表达式生成的向量是相同的,因为它们都是从相同种子值下的相同指数分布中采样的。
rexp(1000, 1)和 和有什么区别replicate(1000, rexp(1, 1))?在实践中我应该使用哪个?
这是我尝试过的代码:
> options(digits = 2)
> set.seed(1)
>
> a <- rexp(1000, 1)
> b <- replicate(1000, rexp(1, 1))
>
> median(a)
[1] 0.73
> median(b)
[1] 0.68
Run Code Online (Sandbox Code Playgroud) simulation ×10
r ×4
c++ ×1
desolve ×1
distribution ×1
emulation ×1
exp ×1
java ×1
keypress ×1
modelica ×1
modelsim ×1
networking ×1
ode ×1
omnet++ ×1
performance ×1
poisson ×1
python-3.x ×1
quadtree ×1
replicate ×1
statistics ×1
timestep ×1
veins ×1
verilog ×1