我有一个连接的有向加权图。边权重表示顶点之间移动的概率;从顶点发出的所有边的权重总和为 1。该图包含两个接收器:A 和 B。对于图中的每个顶点,我想知道从那里出发的步行到达 A 的概率,到达 B 的概率也是如此。这是一个什么样的问题?我该如何解决?
我有一个有限的无向图,其中一个节点被标记为"开始"而另一个被标记为"目标".
最初将代理放置在起始节点处,并且它随机地导航通过该图,即,在每个步骤中,它随机地均匀地选择邻居节点并移动到该节点.当它到达目标节点时它停止.
我正在寻找一种算法,该算法针对每个节点,在从开始到目标的过程中给出关于代理访问它的概率的指示.谢谢.
我正在构建一个有偏差的相关随机游走,我已经设法构建RW,并将其偏向西方运动.
问题:我需要将步行绑定在一个(或所有)侧面.
目前的代码是:
walk<-function(n.times){
plot(524058:542800,2799758:2818500,type="n",
xlab="Easting",ylab="Northing")#aren??a
y<-2815550 ##startY
x<-542800 #startX
N<-4000
E<-4000
points(x,y,pch=16,col="red",cex=1)
for (i in 1:n.times) {
yi <- sample(c(N,N/2,N/4,N/8,N/12,N/16,
0,-N,-N/2,-N/4,-N/8,-N/12,-N/16),1)
xi<-sample(c(E,E/12,E/16, 0,-E,-E/2,-E/4,-E/8,-E/12,-E/16),1)
lines(c(x,x+xi),c(y,y+yi),col="blue")
x<-x+xi
y<-y+yi
}
}
iterations<-125
walk(iterations)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我最接近的是使用
if(y>2818500 | y<2799758 | x>542800 | x<524058) break
Run Code Online (Sandbox Code Playgroud)
如果它离开竞技场,它就会停止行走.
我需要生成一条包含 25 个线段的随机路径,该路径永远不会在 1000x1000 区域中的两个位置之间交叉。有什么好的算法可以做到这一点?
我最初的想法是使用空间划分方法生成一个随机多边形,然后删除一侧,从而产生良好的结果。
这种方法的缺点是起点总是相当接近终点(因为它们最初是通过线连接的)。
另一个缺点是,由于它们是多边形,整体形状会生成某种形式或扭曲的圆形。有很多类型的路径永远不会生成,例如螺旋。
有人知道可以帮助我生成这些路径的算法吗?
我想在2d做一个随机游走,并绘制2d步行.我已经能够走路,但情节并不完全是我想要的.是否有可能看到在python中的现场直播?或者只是为每个点添加一个标签,以便您知道哪个点首先出现,哪个点出现在第二个等等?
import numpy as np
import matplotlib.pyplot as plt
import random
def randomWalkb(length):
steps = []
x,y = 0,0
walkx,walky = [x],[y]
for i in range(length):
new = random.randint(1,4)
if new == 1:
x += 1
elif new == 2:
y += 1
elif new ==3 :
x += -1
else :
y += -1
walkx.append(x)
walky.append(y)
return [walkx,walky]
walk = randomWalkb(25)
print walk
plt.plot(walk[0],walk[1],'b+', label= 'Random walk')
plt.axis([-10,10,-10,10])
plt.show()
Run Code Online (Sandbox Code Playgroud)
编辑我复制了自己的代码错误,现在正在编译,如果你安装了正确的软件包.
我正在寻找一个简单的代码,可以模拟网格中的二维随机游走(使用R),然后使用 绘制数据ggplot。
特别是,我对从 2D 网格中的几个位置(5 个点)到方形网格中心的随机游走感兴趣。它仅用于可视化目的。
然后我的想法是ggplot在离散网格上绘制结果(如模拟的那样),可能使用函数geom_tile。
您对我可以轻松操作的现有代码有什么建议吗?
如何在不超过最大值且不低于最小值的情况下生成起始值之间的随机游走数据?
这是我尝试执行此操作的方法,但由于某种原因,有时该系列会超过最大值或低于最小值。似乎尊重开始值和结束值,但不尊重最小值和最大值。如何解决这个问题?我还想给出波动的标准差,但不知道如何给出。我使用 arandomPerc表示波动,但这是错误的,因为我想指定 std 。
import numpy as np
import matplotlib.pyplot as plt
def generateRandomData(length,randomPerc, min,max,start, end):
data_np = (np.random.random(length) - randomPerc).cumsum()
data_np *= (max - min) / (data_np.max() - data_np.min())
data_np += np.linspace(start - data_np[0], end - data_np[-1], len(data_np))
return data_np
randomData=generateRandomData(length = 1000, randomPerc = 0.5, min = 50, max = 100, start = 66, end = 80)
## print values
print("Max Value",randomData.max())
print("Min Value",randomData.min())
print("Start Value",randomData[0])
print("End Value",randomData[-1])
print("Standard deviation",np.std(randomData))
## plot values
plt.figure()
plt.plot(range(randomData.shape[0]), …Run Code Online (Sandbox Code Playgroud) 我必须编写一个代码来计算醉汉步行的路线和长度。
练习:一个酒鬼开始漫无目的地行走,从灯柱处开始。在每个时间步,他随机地向北、向东、向南或向西走一步。N步后,酒鬼离灯柱有多远?为了模拟酒鬼的步数,我们可以用数字对每个方向进行编码,这样当随机变量等于 0 时酒鬼向北移动,如果随机变量等于 1 酒鬼向东移动,依此类推。
编写一个程序,接受一个整数参数 N 并模拟随机游走者的 N 步运动。每一步后,打印随机游走者的位置,将灯柱视为原点 (0, 0)。此外,打印距原点的最终平方距离。
到目前为止,我想出了:
import random
x = 0
y = 0
def randomWalk(N):
for i in range (1, (N)):
a = random.randint
if a == 0:
x = x+0
y = y+1
return (x, y)
print (x, y)
if a == 1:
x = x+1
y = y+0
return (x, y)
print (x, y)
if a == 3:
x = x+0
y = y-1
return (x, y)
print (x, …Run Code Online (Sandbox Code Playgroud) Python问题
我有一个随机步骤的功能:
def random_step():
""" chooses a random step (-1 or 1) and returns it.
inputs: none! However, make sure to use parens when calling it.
For example: ramdom_step()
"""
return random.choice([-1, 1])
Run Code Online (Sandbox Code Playgroud)
我需要在我写的这个函数中调用它:
rw_outcome( start, numsteps ),需要两个输入:
start,一个表示梦游者起始位置的整数numsteps,一个正int,表示从起始位置获取的随机步骤数它应该模拟随机游走,其中包含numsteps随机步骤,其大小是使用调用来确定的random_step(),但我会继续返回相同的起始位置.
它应该与print返回的一个例子('start is',start):
>>> rw_outcome(40, 4)
start is 40
start is 41
start is 42
start is 41
start is 42
42
Run Code Online (Sandbox Code Playgroud)
到目前为止我所拥有的:
def rw_outcome(start, numsteps):
print('start is', start)
if start + (numsteps*random_step()) …Run Code Online (Sandbox Code Playgroud) 我正在尝试用MPI和C++开发并行随机游走模拟.
在我的模拟中,每个过程都可以被认为是一个可以包含粒子的细胞(随机游走者).单元在一个维度上与周期性边界条件(即环形拓扑)对齐.
在每个时间步骤中,粒子可以保留在其细胞中或以一定概率进入左或右相邻细胞.为了使它更容易一些,只有每个单元格列表中的最后一个粒子可以行走.如果粒子行走,则必须将其发送到具有相应等级的进程(MPI_Isend + MPI_Probe + MPI_Recv + MPI_Waitall).
然而,在第一步之后,我的粒子开始消失,即消息以某种方式"丢失".
下面是一个最小的例子(抱歉,如果它仍然相当长).为了更好地跟踪粒子运动,每个粒子都有一个ID,它对应于它开始的过程的等级.在每个步骤之后,每个单元格打印存储在其中的粒子的ID.
#include <mpi.h>
#include <vector>
#include <iostream>
#include <random>
#include <string>
#include <sstream>
#include <chrono>
#include <algorithm>
using namespace std;
class Particle
{
public:
int ID; // this is the rank of the process which initialized the particle
Particle () : ID(0) {};
Particle (int ID) : ID(ID) {};
};
stringstream msg;
string msgString;
int main(int argc, char** argv)
{
// Initialize the MPI environment
MPI_Init(NULL, NULL);
// Get the …Run Code Online (Sandbox Code Playgroud)