美文网首页
随机游走类

随机游走类

作者: 大龙10 | 来源:发表于2022-03-18 13:06 被阅读0次

书名:代码本色:用编程模拟自然系统
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5

0.2 随机游走类

1、面向对象编程(OOP)

  对象编程(Object-oriented Programming,OOP)

2、对象

  对象是拥有数据和功能的实体。
  我们要建立的Walker对象有以下特点:

  • 既维持了自身数据(在屏幕中的位置),
  • 又能够执行某些动作(比如绘制自身或者移动一步)。

3、类

  类是构建对象实例的模板,
  我们可以这么比喻它和对象的关系:

  • 类就是用来切割曲奇的模具,
  • 而对象就是曲奇。

4、定义一个Walker类

  Walker对象的模板。

  • Walker对象只需要两部分数据——x坐标和y坐标。
  • 除了数据,我们还可以在类中定义对象的功能函数。
class Walker {
  int x,y;

  Walker() {
    x = width/2;
    y = height/2;
  }

  void render() {
    stroke(255);
    point(x,y);
  }

  // Randomly move to any neighboring pixel (or stay in the same spot)
  void step() {
    int stepx = int(random(3))-1;
    int stepy = int(random(3))-1;
    x += stepx;
    y += stepy;
    x = constrain(x,0,width-1);
    y = constrain(y,0,height-1);
  }
}

5、“传统”随机游走模型

  “传统”随机游走模型中的上述变量,都有一个共同点:

  • 在任意时刻,游走对象朝某一个方向移动的概率等于它朝其他任意方向移动的概率。
    比如,如果游走对象有4个可能的移动方向,它朝某个方向移动一步的概率就是1/4(25%);
    如果它有9个可能的移动方向,朝某个方向移动的概率是1/9(11%)。
Walker w;

void setup() {
  size(200,200);
  // Create a walker object
  w = new Walker();
  background(0);
}

void draw() {
  // Run the walker object
  w.step();
  w.render();
}

  简单地说,这就是random()函数的工作方式,Processing的随机数生成器产生的随机数是均匀分布的。

6、均匀分布

  我们可以用Sketch测试这种均匀分布:不断地产生某个区间内的随机数,并根据各个随机数的出现次数绘制柱状图。

int[] randomCounts;

void setup() {
  size(640,240);
  randomCounts = new int[20];

  }

void draw() {
 
   int index = int(random(randomCounts.length)); 
  randomCounts[index]++;
  stroke(0);
  fill(127);
  int w = width/randomCounts.length;
  for (int x = 0; x < randomCounts.length; x++) {
      rect(x*w,height-randomCounts[x],w-1,randomCounts[x]);
  } 
  
}

7、伪随机数

  我们从random()函数中取得的随机数并不是真正随机的,因此它们称为"伪随机数"。
  它们是由模拟随机的数学函数生成的。随着时间推移,这个函数将呈现出固定的模式,但那段时间很长,所以对我们来说,它的随机性已经足够了。

相关文章

  • 随机游走类

    书名:代码本色:用编程模拟自然系统作者:Daniel Shiffman译者:周晗彬ISBN:978-7-115-3...

  • 随机游走

    书名:代码本色:用编程模拟自然系统作者:Daniel Shiffman译者:周晗彬ISBN:978-7-115-3...

  • DeepWalk随机游走

    算法思想 参考资料 https://zhuanlan.zhihu.com/p/45167021[https://z...

  • simrank随机游走实现

    simrank在推荐系统中,应用的比较广泛,原理互联网上很多。实践中,使用spark进行计算时,当【用户】+【物料...

  • Levy Flight 模型及Matlab实现

    随机游走 随机游走就是在任意维度的空间中,一个点随机地向任意方向前进任意长度的矩离,然后重复这个步骤。比如醉汉回家...

  • week9

    chp14 随机游走与数据可视化 模拟模型:1、模仿实际系统的活动2、预测实验系统的未来状态 布朗运动是随机游走的...

  • 缜密设计还是随机游走?

    文/明道软件 胡晨川 老大布置了作业:看老罗的坚果手机发布会,然后写感想~ 拖了一周,看了若干篇与老罗有关的热文后...

  • 随机游走模型 random walk

    简介 随机游走模型,又称醉汉模型 典故 它最早于 1905 年 7 月 由卡尔-皮尔逊在《自然》杂志上作为一个问题...

  • 局部搜索之随机游走

    随机游走(random walk)是局部搜索算法中最简单的一个,它的基本策略就是每次从当前候选解的邻居中选择一个更...

  • [R] random walk

    随机游走(random walk)也称随机漫步,随机行走等是指基于过去的表现,无法预测将来的发展步骤和方向。核心概...

网友评论

      本文标题:随机游走类

      本文链接:https://www.haomeiwen.com/subject/hazudrtx.html