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

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

相关推荐
蒸蒸yyyyzwd4 小时前
cpp对象模型学习笔记1.1-2.8
java·笔记·学习
睡美人的小仙女1275 小时前
Threejs加载环境贴图报错Bad File Format: bad initial token
开发语言·javascript·redis
Wen5 小时前
小米路由器4A千兆刷OPENWRT(简单快速)
网络·经验分享·智能路由器
程序员徐师兄5 小时前
Windows JDK11 下载安装教程,适合新手
java·windows·jdk11 下载安装·jdk11 下载教程
rayufo5 小时前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
RANCE_atttackkk5 小时前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
缺点内向6 小时前
C#编程实战:如何为Word文档添加背景色或背景图片
开发语言·c#·自动化·word·.net
五岳6 小时前
DTS按业务场景批量迁移阿里云MySQL表实战(下):迁移管理平台设计与实现
java·应用·dts
一起养小猫6 小时前
Flutter for OpenHarmony 实战:记账应用数据统计与可视化
开发语言·jvm·数据库·flutter·信息可视化·harmonyos
zhougl9966 小时前
Java 所有关键字及规范分类
java·开发语言