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

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

相关推荐
zs宝来了24 分钟前
Playwright 自动发布 CSDN 的完整实践
java
Birdy_x27 分钟前
接口自动化项目实战(1):requests请求封装
开发语言·前端·python
海海不瞌睡(捏捏王子)43 分钟前
C++ 知识点概要
开发语言·c++
中屹指纹浏览器1 小时前
2026基于内核隔离的浏览器环境虚拟化技术在企业数字化运营中的应用研究
经验分享·笔记
桌面运维家1 小时前
VLAN配置进阶:抑制广播风暴,提升网络效率
开发语言·网络·php
吴声子夜歌1 小时前
TypeScript——基础类型(三)
java·linux·typescript
AF_INET62 小时前
RV1126B开发板学习篇(二)v4l2+mpp编码
c语言·经验分享·音视频·视频编解码·嵌入式软件·rv1126b
探索宇宙真理.2 小时前
WordPress CMS Commander 插件SQL漏洞 | CVE-2026-3334概念复现&研究
经验分享·eureka·安全漏洞
一轮弯弯的明月2 小时前
Python基础-速通秘籍(下)
开发语言·笔记·python·学习