标签: random-walk

在2D网格中随机漫步所覆盖的区域是什么?

我是一名生物学家,申请工作,我需要解决这个问题.这是一个开放的书籍测试,互联网和任何其他资源是公平的游戏.这是一个问题 - 我一直坚持如何处理它,并希望指点.我的直觉被张贴在下面.

背景

你的邻居是一头有两头奶牛的农夫,Clarabelle和Bernadette.每头奶牛都有自己的方形笔,一边是11米(见第一张图).这位农民正前往城外旅游,并计划将奶牛放在各自的围栏中,这些围栏完全被草丛填满.奶牛开始在笔的中心,并将慢慢地围着笔吃草.它们非常缓慢地在笔周围移动,在每一步之后总是停下来吃饭或休息.如果将笔分成1米的正方形,奶牛可以在每一步向任何方向移动一个方格(如棋盘上的国王),如第二张图所示.

图1/2

每次移动后,如果可以的话,奶牛将在新的广场上吃草20分钟.一旦广场上的草被吃掉,它就永远消失了.如果母牛移动到已经吃过草的广场上,那么母牛将在那个广场上休息20分钟.20分钟后,无论是休息还是进食,奶牛都会移动到另一个广场.如果母牛在栅栏附近的广场上,她将永远不会试图向栅栏方向移动.奶牛不会连续两次停留在同一个广场上 - 它们在休息或进食后总是会移动到另一个广场.第一个图显示了几个小时后笔可能看起来像什么的例子,棕色斑点表示已经放牧的方格.

第一头牛Clarabelle在移动时不喜欢方向.她同样有可能随时向任何方向移动.设p是她向一个方向移动的概率,如下图所示.

第二头母牛伯纳黛特(Bernadette)喜欢走向草坪广场.当她走向一个已经吃过的空间时,她走向有草的空间的可能性是她的两倍,如下图所示.

图3/4

问题

  • 如果农民在48小时后回来,你期望Clarabelle吃掉她笔中有多少百分比的草?
  • 你期望伯纳黛特能在她的笔中吃掉50%的草需要多长时间?
  • 假设如果任何一头奶牛24小时不吃草,她就会死.预计哪头牛会活得更久?

我的直觉

这似乎是通过二维网格建模随机游走.例如,我可以计算出在给定时间之后在网格中的特定节点处的概率.但我不确定如何考虑牛在它走过时所覆盖的区域.非常感谢任何见解.

编辑:这里的最终目标是为我编写某种程序.这不是一个纯粹的数学问题,因此这里的帖子.

algorithm random-walk

11
推荐指数
1
解决办法
1172
查看次数

使用 srand() 在随机游走中出现蝴蝶图案,为什么?

大约 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)

c++ random srand random-walk random-seed

11
推荐指数
1
解决办法
228
查看次数

模拟随机游走

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)

请帮忙!

r random-walk

10
推荐指数
2
解决办法
3万
查看次数

加速模拟

我有以下情况:

如果该马尔可夫链从位置 = 5 开始,则变量在 prob=0.5 时移动 +1,在 prob=-0.5 时移动 -1

  • 情况 1:变量首次达到位置 = 0 的预期时间是多少?
  • 情况 2:变量在至少一次达到position=10 后首次达到position=0 的预期时间是多少?

我尝试按如下方式执行此操作(我创建了一个跟踪变量来查看模拟卡在哪里):

# 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)

algorithm performance r random-walk

9
推荐指数
3
解决办法
326
查看次数

Python代码:几何布朗运动 - 出了什么问题?

我是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)

python finance stochastic random-walk

8
推荐指数
1
解决办法
2万
查看次数

随机行走熊猫

我正在尝试在熊猫中快速创建模拟随机游走系列.

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)

这应该从开始以来给出累积的复合回报

python pandas random-walk

8
推荐指数
1
解决办法
2882
查看次数

如何根据此公式扩展随机游走算法以包括预先分割的图像?

  • 我有以下公式来扩展已在SciKit-Image 分割中实现的原始随机游走算法的数学期望。
  • 我尝试通过模仿 Scikit-image 实现来实现本文中提到的引导式随机游走算法。
  • 但由于掩码 Array b ,我的实现不正确。
  • 如何正确实现以下数学期望?

我的代码挂了。

引导随机游走

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

6
推荐指数
0
解决办法
304
查看次数

有向加权图行走

我有一个连接的有向加权图。边权重表示顶点之间移动的概率;从顶点发出的所有边的权重总和为 1。该图包含两个接收器:A 和 B。对于图中的每个顶点,我想知道从那里出发的步行到达 A 的概率,到达 B 的概率也是如此。这是一个什么样的问题?我该如何解决?

theory graph-theory random-walk

5
推荐指数
1
解决办法
2085
查看次数

如何在R中重复1000次这种随机游走模拟?

我正在模拟一维对称的随机游走过程:

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=5t=10.)

哪个函数可以让我用y[t]随机游走时间序列进行这种重复?

r time-series sampling random-walk

5
推荐指数
1
解决办法
1183
查看次数

生成随机路径的好算法是什么?

我需要生成一条包含 25 个线段的随机路径,该路径永远不会在 1000x1000 区域中的两个位置之间交叉。有什么好的算法可以做到这一点?

我最初的想法是使用空间划分方法生成一个随机多边形,然后删除一侧,从而产生良好的结果。

结果如下: 输出

这种方法的缺点是起点总是相当接近终点(因为它们最初是通过线连接的)。

另一个缺点是,由于它们是多边形,整体形状会生成某种形式或扭曲的圆形。有很多类型的路径永远不会生成,例如螺旋。

有人知道可以帮助我生成这些路径的算法吗?

random polygon random-walk

5
推荐指数
1
解决办法
2455
查看次数