我是一名生物学家,申请工作,我需要解决这个问题.这是一个开放的书籍测试,互联网和任何其他资源是公平的游戏.这是一个问题 - 我一直坚持如何处理它,并希望指点.我的直觉被张贴在下面.
你的邻居是一头有两头奶牛的农夫,Clarabelle和Bernadette.每头奶牛都有自己的方形笔,一边是11米(见第一张图).这位农民正前往城外旅游,并计划将奶牛放在各自的围栏中,这些围栏完全被草丛填满.奶牛开始在笔的中心,并将慢慢地围着笔吃草.它们非常缓慢地在笔周围移动,在每一步之后总是停下来吃饭或休息.如果将笔分成1米的正方形,奶牛可以在每一步向任何方向移动一个方格(如棋盘上的国王),如第二张图所示.

每次移动后,如果可以的话,奶牛将在新的广场上吃草20分钟.一旦广场上的草被吃掉,它就永远消失了.如果母牛移动到已经吃过草的广场上,那么母牛将在那个广场上休息20分钟.20分钟后,无论是休息还是进食,奶牛都会移动到另一个广场.如果母牛在栅栏附近的广场上,她将永远不会试图向栅栏方向移动.奶牛不会连续两次停留在同一个广场上 - 它们在休息或进食后总是会移动到另一个广场.第一个图显示了几个小时后笔可能看起来像什么的例子,棕色斑点表示已经放牧的方格.
第一头牛Clarabelle在移动时不喜欢方向.她同样有可能随时向任何方向移动.设p是她向一个方向移动的概率,如下图所示.
第二头母牛伯纳黛特(Bernadette)喜欢走向草坪广场.当她走向一个已经吃过的空间时,她走向有草的空间的可能性是她的两倍,如下图所示.

这似乎是通过二维网格建模随机游走.例如,我可以计算出在给定时间之后在网格中的特定节点处的概率.但我不确定如何考虑牛在它走过时所覆盖的区域.非常感谢任何见解.
编辑:这里的最终目标是为我编写某种程序.这不是一个纯粹的数学问题,因此这里的帖子.
大约 3 年前,我和一位同事用 C++ 编写了一个 2D 随机游走,起初它似乎工作正常,因为我们每次都获得不同的模式。但是每当我们决定将步数增加到某个阈值以上时,就会出现明显的蝴蝶图案,我们注意到每次运行代码时,该图案都会重复,但会从蝴蝶的不同位置开始。我们当时总结报告说是srand()函数关联的伪随机生成器造成的,但是今天又找到了这个报告,还有一些想了解的地方。我想更好地了解伪随机生成器是如何工作的,以获得这种对称性和环状图案。模式我'
编辑:
我正在添加用于获取此数字的代码:
#include<iostream>
#include<cmath>
#include<stdlib.h>
#include<time.h>
#include <fstream>
#include <string.h>
#include <string>
#include <iomanip>
using namespace std;
int main ()
{
srand(time(NULL));
int num1,n=250000;
ofstream rnd_coordinates("Random2D.txt");
float x=0,y=0,sumx_f=0,sumy_f=0,sum_d=0,d_m,X,t,d;
float x_m,y_m;
x=0;
y=0;
for(int i=0;i<n;i++){
t=i;
num1= rand()%4;
if(num1==0){
x++;
}
if(num1==1){
x--;
}
if(num1==2){
y++;
}
if(num1==3){
y--;
}
rnd_coordinates<<x<<','<<y<<','<<t<<endl;
}
rnd_coordinates.close();
return 0;
}
Run Code Online (Sandbox Code Playgroud) Xn可以取值-1或1,概率为0.5.并且Sn = Sn-1 + Xn如何计算在Sn = X1 + X2 + ::: + Xn给出的时刻n观察到的部分和.我想在这里模拟随机游走.我做了以下但我不确定它是对的:
rw <- function(n){
x=numeric(n)
xdir=c(TRUE, FALSE)
step=c(1,-1)
for (i in 2:n)
if (sample(xdir,1)) {
x[i]=x[i-1]+sample(step,1)
} else {
x[i]=x[i-1]
}
list(x=x)
}
Run Code Online (Sandbox Code Playgroud)
请帮忙!
我有以下情况:
如果该马尔可夫链从位置 = 5 开始,则变量在 prob=0.5 时移动 +1,在 prob=-0.5 时移动 -1
我尝试按如下方式执行此操作(我创建了一个跟踪变量来查看模拟卡在哪里):
# the simulations can take a long time to run, I interrupted them
library(ggplot2)
library(gridExtra)
n_sims <- 100
times_to_end_0 <- numeric(n_sims)
times_to_end_0_after_10 <- numeric(n_sims)
paths_0 <- vector("list", n_sims)
paths_0_after_10 <- vector("list", n_sims)
for (i in 1:n_sims) {
print(paste("Running simulation", i, "for situation 1..."))
y <- 5
time <- 0
path_0 <- c(y)
while(y > 0) {
step <- sample(c(-1, …Run Code Online (Sandbox Code Playgroud) 我是Python的新手,但对于大学的论文,我需要应用一些模型,最好使用Python.我花了几天时间使用我附带的代码,但是我无法提供帮助,这有什么不对,它不是创建一个随机过程,看起来像标准的布朗运动有漂移.我的参数如mu和sigma(预期回报或漂移和波动)往往只会改变噪声过程的斜率.这是我的问题,它看起来像噪音.希望我的问题足够具体,这是我的coode:
import math
from matplotlib.pyplot import *
from numpy import *
from numpy.random import standard_normal
'''
geometric brownian motion with drift!
Spezifikationen:
mu=drift factor [Annahme von Risikoneutralitaet]
sigma: volatility in %
T: time span
dt: lenght of steps
S0: Stock Price in t=0
W: Brownian Motion with Drift N[0,1]
'''
T=1
mu=0.025
sigma=0.1
S0=20
dt=0.01
Steps=round(T/dt)
t=(arange(0, Steps))
x=arange(0, Steps)
W=(standard_normal(size=Steps)+mu*t)### standard brownian motion###
X=(mu-0.5*sigma**2)*dt+(sigma*sqrt(dt)*W) ###geometric brownian motion####
y=S0*math.e**(X)
plot(t,y)
show()
Run Code Online (Sandbox Code Playgroud) 我正在尝试在熊猫中快速创建模拟随机游走系列.
import pandas as pd
import numpy as np
dates = pd.date_range('2012-01-01', '2013-02-22')
y2 = np.random.randn(len(dates))/365
Y2 = pd.Series(y2, index=dates)
start_price = 100
Run Code Online (Sandbox Code Playgroud)
我想在开始日期从start_price开始构建另一个日期系列,并以随机增长率增长.伪代码:
P0 = 100
P1 = 100 * exp(Y2)
P2 = P1 * exp(Y2)
Run Code Online (Sandbox Code Playgroud)
在excel中很容易做到,但我不能想到这样做的方式而不用pandas迭代数据帧/系列,我也碰到了这样做.
试过:
p = Y2.apply(np.exp)-1
y = p.cumsum(p)
y.plot()
Run Code Online (Sandbox Code Playgroud)
这应该从开始以来给出累积的复合回报
我的代码挂了。
import numpy as np
import time
import scipy
from scipy import sparse, ndimage as ndi
from scipy.sparse.linalg import cg, spsolve
from skimage import img_as_float
from distutils.version import LooseVersion as Version
import functools
if Version(scipy.__version__) >= Version('1.1'):
cg = functools.partial(cg, atol=0)
try:
from pyamg import ruge_stuben_solver
amg_loaded = True
except ImportError:
amg_loaded = False
def make_graph_edges(image):
if(len(image.shape)==2):
# print(image.shape)
n_x, n_y …Run Code Online (Sandbox Code Playgroud) python image-processing image-segmentation random-walk scikit-image
我有一个连接的有向加权图。边权重表示顶点之间移动的概率;从顶点发出的所有边的权重总和为 1。该图包含两个接收器:A 和 B。对于图中的每个顶点,我想知道从那里出发的步行到达 A 的概率,到达 B 的概率也是如此。这是一个什么样的问题?我该如何解决?
我正在模拟一维对称的随机游走过程:
y[t] = y[t-1] + epsilon[t]
Run Code Online (Sandbox Code Playgroud)
其中白噪声用epsilon[t] ~ N(0,1)时间段表示t.这个过程没有任何偏差.
此外,RW是对称的,因为Pr(y[i] = +1) = Pr(y[i] = -1) = 0.5.
这是我在R中的代码:
set.seed(1)
t=1000
epsilon=sample(c(-1,1), t, replace = 1)
y<-c()
y[1]<-0
for (i in 2:t) {
y[i]<-y[i-1]+epsilon[i]
}
par(mfrow=c(1,2))
plot(1:t, y, type="l", main="Random walk")
outcomes <- sapply(1:1000, function(i) cumsum(y[i]))
hist(outcomes)
Run Code Online (Sandbox Code Playgroud)
我想模拟1000个不同的y[i,t]系列(i=1,...,1000; t=1,...,1000).(在那之后,我将检查返回原点(y[1]=0)的概率t=3,t=5和t=10.)
哪个函数可以让我用y[t]随机游走时间序列进行这种重复?
我需要生成一条包含 25 个线段的随机路径,该路径永远不会在 1000x1000 区域中的两个位置之间交叉。有什么好的算法可以做到这一点?
我最初的想法是使用空间划分方法生成一个随机多边形,然后删除一侧,从而产生良好的结果。
这种方法的缺点是起点总是相当接近终点(因为它们最初是通过线连接的)。
另一个缺点是,由于它们是多边形,整体形状会生成某种形式或扭曲的圆形。有很多类型的路径永远不会生成,例如螺旋。
有人知道可以帮助我生成这些路径的算法吗?
random-walk ×10
python ×3
r ×3
algorithm ×2
random ×2
c++ ×1
finance ×1
graph-theory ×1
pandas ×1
performance ×1
polygon ×1
random-seed ×1
sampling ×1
scikit-image ×1
srand ×1
stochastic ×1
theory ×1
time-series ×1