考虑这样的代码(Python):
import random
for i in [1, 2, 3, 4]:
random.seed(i)
randNumbers = [random.rand() for i in range(100)] # initialize a list with 100 random numbers
doStuff(randNumbers)
Run Code Online (Sandbox Code Playgroud)
我想确保randNumbers与一个调用有很大不同.我是否需要确保种子数量在后续调用之间存在显着差异,或者种子是否足够(无论如何)?
对于学生:请认识到上面的代码是超简化的
我正在尝试使用来自mac-ports(OS-X)的Gfortran 4.7编译以下简单代码:
program main
implicit none
integer :: n = 1, clock, i
integer, dimension(1) :: iseed
! initialize the random number generator
call random_seed(size = n)
call system_clock(COUNT=clock)
iseed = clock + 37 * (/ (i - 1, i = 1, n) /)
! iseed = clock
! iseed = abs( mod((clock*181)*((1-83)*359), 104729) )
call random_seed(PUT = iseed)
end program main
Run Code Online (Sandbox Code Playgroud)
并有这个错误:
gfortran-mp-4.7 tmp.f90
tmp.f90:17.23:
call random_seed(PUT = iseed)
1
Error: Size of 'put' argument of 'random_seed' intrinsic at …Run Code Online (Sandbox Code Playgroud) 我必须实施MPI计划.有一些全局变量(4个浮点数数组和其他6个单浮点变量),这些变量首先由主进程从文件中读取数据进行初始化.然后我调用MPI_Init,当等级0的进程等待结果时,其他进程(等级1,2,3,4)在数组等上工作......问题是这些数组似乎不再被初始化,所有设置为0.我试图在主函数内移动全局变量,但结果是一样的.当调用MPI_Init()时,所有进程都是由fork创建的吗?所以每个人都有父亲的内存副本,为什么他们看不到初始化的数组呢?