COMSOL方法编辑器中产生随机数(可控制随机种子)

简介

COMSOL二次开发主要在方法编辑器中进行,编程语言为Java。有时需要产生随机数(比如随机生成一些球体),方法编辑器中已经存在Math.random()可直接使用。

但是,对于某些特殊情况,我希望每次运行代码产生的随机数是一样的。比如第一次运行,产生的随机数序列是0.125,0.326,0.332,0.923;我希望第二次运行依然可以产生这个序列0.125,0.326,0.332,0.923。COMSOL的方法编辑器将无法满足这种需求

接下来,将自己编写一个随机数产生器,程序的开头设置相同的随机种子,那么产生的随机数序列将是可重复的

代码

第一步

在开发器的"库"中新建一个外部类,填入以下代码

java 复制代码
private static final long MULTIPLIER = 25214903917L;
private static final long INCREMENT = 11L;
private static final long MODULUS = (1L<<48);
private static long seed = 12345L;

public static void setSeed(long s) {
  seed = s;
}

public static double nextDouble() {
  seed = (seed*MULTIPLIER+INCREMENT)%MODULUS;
  return ((double) seed/MODULUS)*0.5+0.5;
}

第二步

在方法编辑器中调用所编写的函数

java 复制代码
// 生成100个随机数
randomGen.setSeed(12345L);
for (int i = 0; i < 100; i++) {
  debugLog(randomGen.nextDouble());
}

运行代码后,即可得到输出的随机数结果

相关推荐
木木木一几秒前
Rust学习记录--C8 常用的集合
开发语言·学习·rust
C_心欲无痕1 分钟前
js - AbortController请求中止
开发语言·javascript·ecmascript
yugi9878384 分钟前
基于Matlab的晴空指数计算实现
开发语言·算法·matlab
宝宝单机sop5 分钟前
营养师资源合集
经验分享
song150265372987 分钟前
空间站太阳能帆板电池 组件性能测试 AM0太阳光模拟器
开发语言·python
守护砂之国泰裤辣8 分钟前
Windows+docker下简单kafka测试联调
java·运维·spring boot·docker·容器
不会c嘎嘎9 分钟前
QT中的常用控件 (三)
开发语言·qt
代码方舟9 分钟前
Java企业级风控实战:对接天远多头借贷行业风险版API构建信贷评分引擎
java·开发语言
闫有尽意无琼14 分钟前
Qt局部变量“遮蔽(shadow)”成员变量导致lambda传参报错
开发语言·qt
星火开发设计14 分钟前
Python数列表完全指南:从基础到实战
开发语言·python·学习·list·编程·知识·期末考试