c++蒙特卡洛方法随机行走利用蒙特卡洛模拟实现20×20格子上的随机行走.设随机行走者开始于点(0,0)处,计算经过时间t=10000步后随机行走者在各格点出现的概率.

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/01 19:33:16

c++蒙特卡洛方法随机行走利用蒙特卡洛模拟实现20×20格子上的随机行走.设随机行走者开始于点(0,0)处,计算经过时间t=10000步后随机行走者在各格点出现的概率.
c++蒙特卡洛方法随机行走
利用蒙特卡洛模拟实现20×20格子上的随机行走.设随机行走者开始于点(0,0)处,计算经过时间t=10000步后随机行走者在各格点出现的概率.

c++蒙特卡洛方法随机行走利用蒙特卡洛模拟实现20×20格子上的随机行走.设随机行走者开始于点(0,0)处,计算经过时间t=10000步后随机行走者在各格点出现的概率.

如下模拟1000次.

#include <iostream>
#include <algorithm>
using namespace std;

double a[20][20] = {0};
int dir[][2] = {{-1,0},{1,0},{0,-1},{0,1}};

void nextxy(int &x, int &y){
\x09int a[4] = {0,1,2,3};
\x09random_shuffle(a, a+4);
\x09for(int i=0; i<4; i++){
\x09\x09int newx = x+dir[a[i]][0],
\x09\x09\x09newy = y+dir[a[i]][1];
\x09\x09if(newx>=0 && newx<20 && newy>=0 && newy<20){
\x09\x09\x09x = newx;
\x09\x09\x09y = newy;
\x09\x09\x09return;
\x09\x09}
\x09}
}

int main(){
\x09int count = 10;
\x09for(int k=0; k<count; k++){
\x09\x09int x = 0, y = 0;
\x09\x09for(int i=0; i<10000; i++)
\x09\x09\x09nextxy(x, y);
\x09\x09a[x][y]++;
\x09}
\x09for(int i=0; i<20; i++){
\x09\x09for(int j=0; j<20; j++)
\x09\x09\x09cout << a[i][j]/count << ' ';
\x09\x09cout << endl;
\x09}
}

时间复杂度为o(10000n),n为模拟次数.当n较大时,花费时间较多.

c++蒙特卡洛方法随机行走利用蒙特卡洛模拟实现20×20格子上的随机行走.设随机行走者开始于点(0,0)处,计算经过时间t=10000步后随机行走者在各格点出现的概率. 跪求利用随机函数产生3000000个随机整数,用堆排序方法进行排序并统计出时间的程序 VB编程:利用circle方法绘随机产生颜色各异的同心圆,最大圆半径不超过1000 盲人是如何利用盲道行走的? 盲人是如何利用盲道行走的? 利用随机函数产生30000个随机整数,利用插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序等排序方法进行排序,并统计每一种排序上机所花费的时间. 医学统计学随机方法有几种 利用随机模拟的方法近似计算图中阴影部分面积(y=2-2x-x²与x轴围成的图形) 利用随机模拟方法计算曲线y=1/x.x=1,x=2,和y=0所围成的图形面积 利用随机模拟的方法近似计算图形的面积 y=x²+1与y=6所围区域的面积 二次函数y=x^2与直线y=3围成的区域,利用随机模拟的方法计算阴影部分的面积 利用随机模拟方法估计曲线y=x^2与直线x=1及x轴围成的区域面积 用C语言编写程序:* 利用随机函数产生100个10~99之间(包括10和99)的随机整数存入一维数组A,编写程序:* 利用随机函数产生100个10~99之间(包括10和99)的随机整数存入一维数组A,* 然后先 存在真正的随机数么?我看书上说随机数产生方法有:随机数表法、物理方法、计算机方法.其中计算机法是伪随机数,是利用数学递推公式算出来的数列,书上说物理方法是得到的是真正的随机 利用静电的方法 下雪天在地上行走困难,利用科学知识,怎么办 C语言,随机生成矩阵 利用随机函数产生N个随机整数(10000以上),对这些数进行多种方法进行排序.具体要求如下:1) 至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、选择排序、希尔排序、