c++ - 如何使用 SML 随机生成 Oct-Tuple

标签 c++ sml smlnj

编辑:这是我目前拥有的用于生成患者 Oct 元组的代码。 (感谢 Anon 告诉我如何计算加权概率/设置种子)

fun genPatients(x:int) =
let
val seed=let
val m=Date.minute(Date.fromTimeLocal(Time.now()))
val s=Date.second(Date.fromTimeLocal(Time.now()))
in Random.rand(m,s)
end;   
val survivalrate = ref(1)
val numl = ref(1)
val td = ref(1)
val xray = ref(false)
val count= ref(0)
val emnum= ref(1000)
val ageList = [1, 2, 3, 3];
val xrayList=[false,true];
val age = Random.randRange (0, 3) seed;(* random age*)
val nextInt1 = Random.randRange(0, 1)(* random xray*)
val r1 = Random.rand(1,1)
val nextInt2 = Random.randRange(1, 10000000)(* random td*)
val r2 = Random.rand(1,1)
val r1hold= ref(1);
in
while !count < x do
(
count:= !count + 1;
List.nth(ageList, age);
r1hold:= nextInt1 r1;
td:= nextInt2 r2;
(!emnum,age,survivalrate,numl,[],[],xray,td);
emnum:= !emnum + 1
)
end;

我现在的问题是如何为 bool 列表建立索引?

最佳答案

所以我正在寻找一些帮助来定义我的 Oct-tuple 以完成我的项目,你看我发现有人发布了我的整个项目希望得到讲义答案。不仅如此,而且我几乎可以肯定我们在同一个类(class),你认为在项目到期的前一天晚上发布这个是负责任的学生所做的吗?很确定 SO 上没有人会为你做作业,事实上我什至不确定它是否被允许。

也许做一些工作,然后在您实际完成任何事情后寻求帮助。或者也许在下一阶段更努力地尝试。

编辑:我会给你一些东西让你开始。

要计算加权概率,您需要一个种子。

val seed=let
val m=Date.minute(Date.fromTimeLocal(Time.now()))
val s=Date.second(Date.fromTimeLocal(Time.now()))
in Random.rand(m,s)
end;

这是一个。然后你可以计算概率,至少对于年龄,像这样:

val ageList = [1, 2, 3, 3];
val ageInt = Random.randRange (0, 3) seed;
List.nth(ageList, ageInt)

这就是我决定加权概率部分的方式,如果您有创意,可以将其等同于其他加权部分。祝你好运。

关于c++ - 如何使用 SML 随机生成 Oct-Tuple,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52730609/

相关文章:

compiler-errors - SML代码并且无法编译,要求andalso

list - 带累加器列表的 SML 逆列表

haskell - lambda 绑定(bind)中的模式匹配?

sml - 如何在 SML 的 IF 语句中使用 AND 运算符

error-handling - SMLcircularity操作数和运算符的错误不一致

smlnj - 如何使用 SML 模块中的中缀运算符?

c++ - 无法使用 std::basic_string 推导出模板参数

c++ - 着色器中的多个 [in] 属性 - OpenGL

c++ - 使用 std::remove 删除错误字符

c++ - static_assert 是否有助于优化编译器?