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

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

相关推荐
小二·1 分钟前
WebGPU 浏览器端跑大模型:让AI在网页里跑起来(WebLLM/Transformers.js实战)
开发语言·javascript·人工智能
一路向北North5 分钟前
Spring Security OAuth2.0(22):分布式系统授权-搭建网关
java·后端·spring
小猴子爱上树6 分钟前
Temu批量视频翻译Python实现方案
开发语言·python·音视频
存在的五月雨9 分钟前
SpringBoot后端限制重复提交
java·spring boot·后端
天竺鼠不该去劝架13 分钟前
合规优先!金融智能体、教育智能体落地判断标准(附选型速查表)
经验分享
IDIOSF18 分钟前
R语言 下载安装教程(附安装包)R语言4.5安装步骤(保姆级)
开发语言·其他·r语言
乱七八糟的屋子20 分钟前
LibYAML超全教程-C语言YAML解析与生成
c语言·开发语言·配置文件·yaml解析·libyaml·开源库实战
Sam_Deep_Thinking27 分钟前
一次线程池线上故障复盘:四层防线如何避免数据丢失
java·面试·程序员
paopaokaka_luck27 分钟前
基于Springboot3+Vue3的宠物殡葬管理系统(webSocket实时通讯、接入腾讯地图、支付宝沙盒支付、Echarts图形化分析)
java·开发语言·网络·后端
逝水无殇31 分钟前
HTML 元素详解
开发语言·前端·html