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());
}

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

相关推荐
SimonKing17 小时前
【开发者必备】Spring Boot 2.7.x:WebMvcConfigurer配置手册来了(三)!
java·后端·程序员
2301_8012522217 小时前
前端框架Vue(Vue 的挂载点与 data 数据对象)
java·前端·javascript·vue.js·前端框架
ArabySide17 小时前
【Spring Boot】深入浅出Spring Boot中的控制反转与依赖注入
java·spring boot·后端
shepherd11117 小时前
破局延时任务(上):为什么选择Spring Boot + DelayQueue来自研分布式延时队列组件?
java·spring boot·后端
技术杠精17 小时前
Docker Swarm之Java 应用部署与平滑更新
java·docker·容器
beyond阿亮17 小时前
nacos支持MCP Server注册与发现
java·python·ai·nacos·mcp
zl97989917 小时前
SpringBoot-数据访问之JDBC
java·spring boot
oak隔壁找我17 小时前
SpringBoot 项目不继承 parent 的实现方法
java·后端
狮子座的男孩17 小时前
js基础:06、函数(创建函数、参数、返回值、return、立即执行函数、对象(函数))和枚举对象的属性
开发语言·前端·javascript·经验分享·函数·枚举对象·立即执行函数
.ZGR.17 小时前
蓝桥杯题库——部分简单题题解(Java)
java·数据结构·算法