You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重复调用含随机数生成的Julia函数并将结果存入数组?

问题

我有一个包含随机数生成操作的Julia函数:

function foo()
    return sum(rand([1,0], 5))
end

我希望多次调用这个函数并把结果存入数组,已经知道可以用数组推导式实现:

[foo() for i in 1:10]

但我想找类似repeat()的方法(repeat()用于用相同值填充数组,示例如下),该怎么实现?

julia> repeat([4],3,4)

3×4 Matrix{Int64}:
 4  4  4  4
 4  4  4  4
 4  4  4  4
解决方案

repeat()确实只能复制已有值,无法每次调用函数生成新内容,但可以用以下几种方式实现需求:

  1. 使用fill!配合预分配数组
    fill!支持传入函数作为参数,会对数组的每个位置调用一次函数来填充,完美匹配你的需求:
# 先预分配指定长度的数组
result = Vector{Int}(undef, 10)
# 用foo函数的返回值填充数组
fill!(result, foo)

也可以写成一行:

fill!(Vector{Int}(undef, 10), foo)
  1. 使用map函数
    通过map遍历一个无关的迭代器,每次调用foo()生成结果:
map(_ -> foo(), 1:10)
  1. 结合Iterators.repeated与collect
    这种方式稍显繁琐,但同样可行:
collect(map(_ -> foo(), Iterators.repeated(nothing, 10)))

其中第一种方法(fill!)在性能上更优,因为它是原地修改预分配的数组,避免了额外的内存分配开销。

内容的提问来源于stack exchange,提问作者Georgery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 07:23:15