标签: simulation

模拟在线游戏中的体育比赛

在一个在线经理游戏(如Hattrick)中,我想模拟两个团队之间的匹配.

一支球队由11名球员组成.每位球员的实力值都在1到100之间.我为每支球队采取防守球员的这些力量值并计算平均值.这是球队的防守质量.然后我抓住了进攻球员的优势,我获得了进攻质量.

对于每次攻击,我执行以下操作:

$offFactor = ($attackerTeam_offensive-$defenderTeam_defensive)/max($attackerTeam_offensive, $defenderTeam_defensive);
$defFactor = ($defenderTeam_defensive-$attackerTeam_offensive)/max($defenderTeam_defensive, $attackerTeam_offensive);
Run Code Online (Sandbox Code Playgroud)

目前,我不知道为什么我将它除以两个值中较高的值.但是这个公式应该为你提供一个后来需要的进攻和防守质量的因素.

然后我为每个可能发生的事件嵌套了条件语句.例如:进攻球队是否获得得分机会?

if ((mt_rand((-10+$offAdditionalFactor-$defAdditionalFactor), 10)/10)+$offFactor >= 0) 
{ ... // the attack succeeds
Run Code Online (Sandbox Code Playgroud)

例如,这些额外因素可能是战术价值.

你认为这是计算游戏的好方法吗?我的用户说他们对模拟的质量不满意.我怎样才能改进它们?你有不同的方法可以提供更好的结果吗?或者您认为我的方法是好的,我只需要调整条件语句中的值并进行一些实验?

我希望你能帮助我.提前致谢!

simulation probability

6
推荐指数
1
解决办法
1732
查看次数

如何构建一个小型程序的迷你网络互相馈送数据?

我正在尝试模拟一个实时网络,其中节点是消费者和不同费率的生产者.我如何使用Python快速实现此示例?我想象我会为每个节点编写一个简单的程序,但我不确定如何将它们相互连接.

python simulation

6
推荐指数
1
解决办法
1241
查看次数

从头开始实施科学模拟方法的最佳实践

在科学模拟(物理学)领域我正在考虑用C/C++开发一些新的仿真包.从头开始,您认为最佳做法是什么?你能推荐一些参考书目吗?

谢谢

simulation implementation

6
推荐指数
1
解决办法
546
查看次数

2D网格水/液模拟(基于平台砖)

我有一个基于网格的游戏(平台游戏),我把所有东西都放在了瓷砖上.我有坚固和液体的瓷砖.我正试图找到一种很好的方法来使水砖以粗糙的方式模拟水.

目前我有现行系统:当水砖在另一个水砖上方添加时,它会在下面的水砖上加1.数字表示压力.

这就是目前的样子:

[0]   <- This water tile has 0 in pressure.
[1]   <- This water tile has 1 in pressure.
Run Code Online (Sandbox Code Playgroud)

如果我在底部附近添加另一个水砖,它会从左侧,右侧和上方搜索是否有水砖,并继承其周围的最大压力.

例:

[0]
[1][1]
Run Code Online (Sandbox Code Playgroud)

添加少量水砖后,这是一个更大的例子:

[0][0]
[1][1][1][1]
[2][2][2][2][2]
Run Code Online (Sandbox Code Playgroud)

然后我制作压力等于或大于1的每个水瓦片如果有自由空间则尝试向左/向右移动,然后将压力设置为0并检查是否可以从邻近的水瓦片中继承压力(如果有的话).

除了从顶部移除水瓦片的情况之外,该系统工作得非常好.

如果我从上一个示例中删除顶部水砖:

[1][1][1][1]
[2][2][2][2][2] 
Run Code Online (Sandbox Code Playgroud)

然后我们有压力为1的顶行,现在应该有0,底行应该有1.

是否有一些更智能的系统我可以更好地实现这一点?

以下是限制:

每个图块只能检查其邻居图块.平铺可以定义任何功能.Tile可以有任何变量来存储数据.

你们能想出一个比我更好的系统吗?

我通常的测试案例是:

[]
[] should become [][]

[]
[]
[] should become [][][]

  []
[][][] should become [][][][]
Run Code Online (Sandbox Code Playgroud)

假设游戏运行了一段时间.

任何建议都会受到欢迎!

simulation grid tiles

6
推荐指数
1
解决办法
1965
查看次数

可视化编程语言控制

是否有基于.NET(WinForm或WPF)的控件允许简单的可视化编程(赋值,布尔表达式和数学表达式)?像Microsoft VPL这样的东西,只能嵌入和支持.

替代文字

.net c# simulation visual-programming

6
推荐指数
1
解决办法
3338
查看次数

除Oracle之外的RDBMS中的CONNECT BY或分层查询

Oracle提供了非常方便的功能.您可以使用以下子句创建分层查询(递归行为):

CONNECT BY [NOCYCLE] {condition [AND condition...]} [START WITH condition]
Run Code Online (Sandbox Code Playgroud)

如此处所述:

http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/queries003.htm

我想知道,有没有其他已建立的RDBMS支持等效或类似的语法?或者可以使用常规SQL一般模拟这样的递归行为?

我希望能够模拟的一个很好的例子是(取自Oracle文档):

    SELECT LPAD(' ', 2 * (LEVEL-1)) || last_name org_chart, 
           employee_id, manager_id, job_id
      FROM employees
START WITH job_id = 'AD_VP' 
CONNECT BY PRIOR employee_id = manager_id; 
Run Code Online (Sandbox Code Playgroud)

导致:

ORG_CHART          EMPLOYEE_ID MANAGER_ID JOB_ID
------------------ ----------- ---------- ----------
Kochhar                    101        100 AD_VP
  Greenberg                108        101 FI_MGR
    Faviet                 109        108 FI_ACCOUNT
    Chen                   110        108 FI_ACCOUNT
    Sciarra                111        108 FI_ACCOUNT
    Urman                  112        108 FI_ACCOUNT
    Popp                   113        108 FI_ACCOUNT
  Whalen                   200        101 AD_ASST …
Run Code Online (Sandbox Code Playgroud)

sql oracle simulation connect-by recursive-query

6
推荐指数
2
解决办法
6113
查看次数

如何模拟真实设备上的来电?

出于测试目的,我想模拟/欺骗在真实的Android设备(即不是模拟器)上进行调用.我知道DDMS为仿真器提供了这个功能,但我无法找到usb连接的实际设备的解决方案.

simulation android phone-call

6
推荐指数
1
解决办法
7333
查看次数

'qbeta'可能没有实现全精度

我在使用Windows 7旗舰版(英特尔酷睿i5-2400 3GHz处理器,8.00GB内存)的PC上运行R版本2.14.0.如果需要其他规格,请告诉我.

我试图模拟相关的beta分布式数据.我使用的方法是本文所写内容的扩展:

http://onlinelibrary.wiley.com/doi/10.1002/asmb.901/pdf

  1. 基本上,我首先模拟多元正常数据(使用mvrnorm()MASS中的函数).
  2. 然后我使用pnorm()probit变换应用于这些数据,以便我的新数据向量存在于(0,1).并且根据之前的陈述仍然相关.
  3. 然后给出这些概率转换数据,我应用qbeta()具有某些shape1和shape2参数的函数,以获得具有特定均值和色散属性的相关β数据.

我知道存在生成相关beta数据的其他方法.我感兴趣的是为什么qbeta()导致这种方法失败的某些"种子".以下是我收到的错误消息.

Warning message:
In qbeta(probit_y0, shape1 = a0, shape2 = b0) :
  full precision may not have been achieved in 'qbeta'
Run Code Online (Sandbox Code Playgroud)

这是什么意思?怎么可以避免?当它确实发生在更大模拟的上下文中时,确保此问题不会终止整个源(使用source())模拟代码的最佳方法是什么?

我为1:1000的整数种子运行了以下代码.种子= 899是唯一给我带来问题的价值.虽然如果它在这里有问题,它也不可避免地会对其他种子造成问题.

library(MASS)
set.seed(899)
n0 <- 25  
n1 <- 25    
a0 <- 0.25    
b0 <- 4.75    
a1 <- 0.25    
b1 <- 4.75    
varcov_mat <- matrix(rep(0.25,n0*n0),ncol=n0)
diag(varcov_mat) <- 1
y0 <- mvrnorm(1,mu=rep(0,n0),Sigma=varcov_mat)
y1 <- mvrnorm(1,mu=rep(0,n1),Sigma=varcov_mat)
probit_y0 <- pnorm(y0)
probit_y1 <- pnorm(y1)
beta_y0 <- …
Run Code Online (Sandbox Code Playgroud)

simulation r beta-distribution

6
推荐指数
1
解决办法
1011
查看次数

最简单的方法来模拟最大CPU负载?

我必须测试嵌入式计算机的最极端条件下产生的热量和电流消耗,为此我想编写一个程序,尽可能多地使用CPU资源的四核CPU(每个核心一个线程).你能提出一些非常耗费CPU的东西吗?

我必须在ARMv7上为Linux执行此操作,并且语言是C或C++,我发现的其他示例要么是针对Windows,要么是针对C/C++.

我在我的Windows计算机上尝试这样的东西,显然它正在工作,因为它需要12%的总CPU功率(这是每个核心i7四核2线程):

float x = 1.5f;
while (1)
{
    x *= sin(x) / atan(x) * tanh(x) * sqrt(x);
}
Run Code Online (Sandbox Code Playgroud)

我不知道怎么做多线程.

c simulation multithreading cpu-usage

6
推荐指数
1
解决办法
1747
查看次数

Python中的几何布朗运动模拟

我试图在Python中模拟几何布朗运动,通过蒙特卡罗模拟为欧洲看涨期权定价.我对Python比较陌生,而且我收到一个我认为错误的答案,因为它无法收敛到BS价格,并且由于某种原因迭代似乎是负面趋势.任何帮助,将不胜感激.

import numpy as np
from matplotlib import pyplot as plt


S0 = 100 #initial stock price
K = 100 #strike price
r = 0.05 #risk-free interest rate
sigma = 0.50 #volatility in market
T = 1 #time in years
N = 100 #number of steps within each simulation
deltat = T/N #time step
i = 1000 #number of simulations
discount_factor = np.exp(-r*T) #discount factor

S = np.zeros([i,N])
t = range(0,N,1)



for y in range(0,i-1):
    S[y,0]=S0
    for x in range(0,N-1): …
Run Code Online (Sandbox Code Playgroud)

python simulation finance stocks montecarlo

6
推荐指数
1
解决办法
7508
查看次数