首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将此算法更改为在随机游走中包含多个粒子,而不仅仅是一个粒子?

如何将此算法更改为在随机游走中包含多个粒子,而不仅仅是一个粒子?
EN

Stack Overflow用户
提问于 2016-08-19 04:27:47
回答 1查看 57关注 0票数 0

如何将多个粒子添加到下面的程序中?这只是一个简单的三维随机漫游。

代码语言:javascript
运行
复制
program RW3D

    implicit none

    integer :: x, y, z, i
    real :: P

    x = 0
    y = 0
    z = 0

    do i = 1, 100
       call random_number (p)

        write (1,*) i, x, y, z

        if (p .lt. 1.0/6) then
            x = x - 1
         else if (p .gt. 1.0/6 .lt. 2.0/6) then
            y = y - 1
         else if (p .lt. 3.0/6) then
            z = z - 1
         else if (p .lt. 4.0/6) then
            x = x + 1
         else if (p .lt. 5.0/6) then
            y = y + 1
         else
            z = z + 1
        end if

    end do

end program RW3D
EN

回答 1

Stack Overflow用户

发布于 2016-08-19 04:32:41

最简单的方法:创建数组

代码语言:javascript
运行
复制
   integer, parameter :: n = ...the number of particles

   integer :: x(n), y(n), z(n)
   integer :: i, j

.

代码语言:javascript
运行
复制
x = 0
y = 0
z = 0

do i = 1, 100
  do j = 1, n
   call random_number (p)

    if (p .lt. 1.0/6) then
        x(j) = x(j) - 1
     else if (p .gt. 1.0/6 .lt. 2.0/6) then
        y(j) = y(j) - 1

诸若此类。

另一种方法是为粒子创建派生类型

代码语言:javascript
运行
复制
type particle
  integer :: x, y, z
end type

还有一大堆的

代码语言:javascript
运行
复制
type(particle) :: particles(n)

我已经展示了大小为n的静态数组。当然,您可以使用可分配的数组。

我没有包含任何输入/输出,因为您必须决定如何存储您的结果。

我不推荐在write(1,*)中使用单元号1。10以下的单位通常用于特殊目的。使用大于10的数字。最好使用Fortran2008中的newunit=

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39026939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档