回 帖 发 新 帖 刷新版面

主题:fortran中如何产生poisson分布的随机数


我查了相关命令,

RNPOI

Generates pseudorandom numbers from a Poisson distribution

部分程序:
use imsl
.....
....
theta = 2.0d0
call random_seed()

do i=1,n

call dRNPOI(theta, RandN(i))

end do



但是 只能compile通过, build 的时候显示错误

Experiment-Try.obj : error LNK2001: unresolved external symbol _DRNPOI@8
Debug/Experiment-Try.exe : fatal error LNK1120: 1 unresolved externals


就是没有那个函数。。。。



问一下, 大家产生随机数的函数,一般是用什么库里的函数???
谢谢....

回复列表 (共8个回复)

沙发

你调用RNPOI时干嘛前面加“D”?文档里有说得加D么?还有:Theata和RandN的类型是Real(8)么?

板凳


real(8)              :: RandN(n), theta


是的  我定义的都是 双精度

所以调用时必须加  d

3 楼

把D去了试试吧。说明书里有说需要加D?

4 楼

还有,初始化随机种子不是这么用的,毕竟这是FORTRAN,随机算法是比较好的,故初始化种子也会比较麻烦点儿:)

5 楼


我调用随机正态分布的随机数的时候 就这么用过

不管是 随机种子 还是 double双精度的 都可以


我这里双精度的

real(8)              :: RandN(n), theta
call DRNPOI(theta, RandN(i))

但是还是错误:
--------------------Configuration: Experiment-Try - Win32 Debug--------------------
Linking...
Experiment-Try.obj : error LNK2001: unresolved external symbol _DRNPOI@8
Debug/Experiment-Try.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Experiment-Try.exe - 2 error(s), 0 warning(s)



说明还是没有那个生成随机数的函数....DRNPOI() ???

你能试一下你机子上能不能 产生? 是不是我用错了?

6 楼



我调用随机正态分布的随机数的时候 就这么用过

不管是 随机种子 还是 double双精度的 都可以


我这里双精度的

real(8)              :: RandN(n), theta
call DRNPOI(theta, RandN(i))

但是还是错误:
--------------------Configuration: Experiment-Try - Win32 Debug--------------------
Linking...
Experiment-Try.obj : error LNK2001: unresolved external symbol _DRNPOI@8
Debug/Experiment-Try.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Experiment-Try.exe - 2 error(s), 0 warning(s)



说明还是没有那个生成随机数的函数....DRNPOI() ???

你能试一下你机子上能不能 产生? 是不是我用错了?

7 楼


是我弄错了 

以下这么做是可以的:

integer  :: RandN
real     :: theta
 
theta = 2.0d0
call random_seed()

call RNPOI(1, theta, RandN )
write(*,*)"RandN=",RandN

就是说 必须是 theta 是 单精度的 

另外产生的poisson随机数必须是 整型的(由poisson分布的定义)

就可以的


谢谢你

8 楼

你試試吧,,如果imsl依賴於fortran的隨機種子,那你每次執行程序生成的隨機序列都將是一樣的

我来回复

您尚未登录,请登录后再回复。点此登录或注册