使用数组 eltype 实现采样器

2024-03-19

钩入rand过去更容易......我想我遵循了描述在文档中 https://docs.julialang.org/en/v1/stdlib/Random/#A-simple-sampler-without-pre-computed-data-1,但它似乎不像采样器返回数组:

using Random

struct Shell{N}
    r0::Float64
    r1::Float64
end

Base.eltype(::Type{Shell{N}}) where {N} = Array{Float64, N}

function Random.rand(rng::Random.AbstractRNG, d::Random.SamplerTrivial{Shell{N}}) where {N}
    # ignore the correctness of the sampling algorithm for now :)
    shell = d[]
    Δ = shell.r1 - shell.r0
    θ = Δ .* randn(N)
    r = shell.r0 .+ θ .* .√rand(N) 
end

Test:

julia> rand(Shell{2}(0, 1))
2-element Array{Float64,1}:
 0.5165139561555491  
 0.035180151872393726

julia> rand(Shell{2}(0, 1), 2)
ERROR: MethodError: no method matching Array{Float64,2}(::Array{Float64,1})
Closest candidates are:
  Array{Float64,2}(::AbstractArray{S,N}) where {T, N, S} at array.jl:498
  Array{Float64,2}(::UndefInitializer, ::Int64, ::Int64) where T at boot.jl:406
  Array{Float64,2}(::UndefInitializer, ::Int64...) where {T, N} at boot.jl:410
  ...
Stacktrace:
 [1] convert(::Type{Array{Float64,2}}, ::Array{Float64,1}) at ./array.jl:490
 [2] setindex!(::Array{Array{Float64,2},1}, ::Array{Float64,1}, ::Int64) at ./array.jl:782
 [3] rand! at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/Random/src/Random.jl:271 [inlined]
 [4] rand! at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/Random/src/Random.jl:266 [inlined]
 [5] rand at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/Random/src/Random.jl:279 [inlined]
 [6] rand at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/Random/src/Random.jl:280 [inlined]
 [7] rand(::Shell{2}, ::Int64) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/Random/src/Random.jl:283
 [8] top-level scope at REPL[14]:1

我缺少什么?


你的定义rand总是返回一个Array{Float64,1},但你声明它返回Array{Float,N}(通过你的定义eltype)。这就是错误告诉您的内容:将新生产的Vector{Float64}到结果数组中eltype Array{Float64,2},必须进行转换,但没有定义此类转换,因此会出现错误。

在这种情况下,似乎改变eltype定义为Base.eltype(::Type{<:Shell}} = Array{Float64, 1}会解决你的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用数组 eltype 实现采样器 的相关文章

  • 在 O(n) 时间和 O(1) 空间中生成数组的随机排列

    我们必须生成数组 1 2 3 n in O 1 space 我能够做到O n space I did O n 空间解决方案 首先存储数组 然后将其随机化 但是如何在不存储数组的情况下做到这一点O 1 space 我只是生成随机数 而不是存储
  • random.seed():它有什么作用?

    我有点困惑什么random seed 在 Python 中是这样的 例如 为什么下面的试验会 一致地 做他们所做的事情 gt gt gt import random gt gt gt random seed 9001 gt gt gt ra
  • 在 Julia 中提取参数类型

    假设我在 Julia 中编写了一个函数 它接受Dict K V 作为参数 然后创建类型的数组Array K 1 and Array V 1 我怎样才能提取类型K and V来自 Dict 对象 以便我可以使用它们来创建数组 斯文和约翰的答案
  • 制作具有行和列约束的随机存在/不存在矩阵(因此是布尔值)

    我正在尝试在 R 中创建一个随机矩阵 它需要是一个存在 不存在矩阵 以便矩阵中的所有值都为 0 或 1 但我还需要指定行和列总计 例如 5x5 表 其中 行总计为 r1 4 r2 2 r3 3 r4 5 r5 3 列总计为 c1 5 c2
  • Julia:如何让多个工作人员访问模块中的函数?

    我有以下测试模块 MyMod jl 来在 Julia 中存储一些测试函数 一些核心函数是串行编写的 其他函数并行调用核心函数 module MyMod export Dummy distribute data getfrom recombi
  • 这个简单的洗牌算法是否会返回一副随机洗牌的扑克牌? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 您有一个包含 52 张卡片的列表 其中列表中卡片的位置不会移动 您有第二个卡位置列表 首先 位置列表与第一个列表相同 迭代第一个列表 对于第一个列表中
  • Julia:如何使用 PyPlot 创建不同大小的子图?

    我想创建一个包含多个绘图的图形 不过我希望能够使每个图具有不同的大小 例如 我希望第一个子图的宽度大约是第二个子图的两倍 我希望做这样的事情 using PyPlot a rand 500 900 b rand 500 400 notice
  • Math.random 生成多少熵?

    我想生成一个非常大的随机数 我不需要这个号码来保证加密安全 因此 我没有使用crypto getRandomValues https developer mozilla org en US docs Web API RandomSource
  • 如何使用 Android Studio 2.1.3 从 Android 中的文本文件中获取随机行?

    我有一个 500 行的文本文件 我将此文本文件放置在 app src main assets 文件夹中 名称为 words txt 在此文件中 每一行都用换行符分隔 现在我需要从这个文本文件中获取随机行 在发布此内容之前 我访问了以下问题
  • 随机数生成器每次仅返回一个数字

    Python 是否有一个随机数生成器 每次只返回一个随机整数next 函数被调用 数字不应该重复并且生成器应返回区间内的随机整数 1 1 000 000 这是独一无二的 我需要生成超过一百万个不同的数字 这听起来好像非常消耗内存 以防所有数
  • 如何在 Julia `DataFrame` 中折叠具有重复时间戳的数据

    我有一个DataFrame对象如下所示 Row timestamp price volume 1 2011 08 14T14 14 40 10 40 0 779 2 2011 08 14T15 15 17 10 40 0 101 3 201
  • 估算缺失数据,同时强制相关系数保持不变

    考虑以下 excel 数据集 m r 2 0 3 3 0 8 4 0 1 3 2 1 5 2 2 3 1 9 2 5 1 2 3 0 2 0 2 6 我的目标是使用以下条件填充缺失值 将上述两列之间的成对相关性表示为 R 大约 0 68 将
  • C# Random 类的问题

    我有一个代表一枚硬币的类 可以使用 Coin Flip 方法翻转它 Flip 使用 random Next 2 得到代表正面或反面的 0 或 1 这很好用 有点 对于该程序 我需要有 2 个我制作的硬币 比如说 coin1 和 coin2
  • 使用 Easy 68K (68000) 组装范围内的随机数

    我正在使用 Easy 68K 模拟器创建一个简单的黑杰克游戏 需要使用随机数来分配牌 我的牌必须在 2 到 11 的范围内 我似乎每次都得到相同的数字 但它不在我预期的范围内 我的卡值需要以 D3 结束 因此我有以下随机数代码 CLR L
  • 当 Jupyter 单元包含函数、循环或其他块时,是否可以将其拆分为多个单元?

    Jupyter 的一项功能是能够一次执行一个单元 如果一个单元格有很多语句 通常可以 希望 将其拆分为更小的单语句单元格 除非涉及块 例如 if for def 等 这个问题之前以不同的方式提出过 在Jupyter中逐步执行算法 https
  • 无需时间即可生成随机字符串?

    我知道如何使用 Runes 和播种 rand Init 在 go 中生成随机字符串time UnixNano 我的问题是 是否可以 使用 stdlib 在不使用当前时间戳 安全 的情况下播种 rand 此外 我问 因为仅仅依靠时间来为敏感操
  • C# 的快速线程安全随机数生成器

    我需要在多个正在运行的线程中快速生成随机浮点数 我尝试过使用System Random 但它对于我的需求来说太慢了 并且它在多个线程中返回相同的数字 当我在单线程中运行应用程序时 它工作正常 此外 我需要确保生成的数字在 0 到 100 之
  • 样本()和r样本()有什么区别?

    当我从 PyTorch 中的发行版中采样时 两者sample and rsample似乎给出了类似的结果 import torch seaborn as sns x torch distributions Normal torch tens
  • 在 C# 中生成随机浮点数的最佳方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在 C 中生成随机浮点数的最佳方法是什么 更新 我想要从 float Minvalue 到 float Maxvalue 的随机浮点数 我在一些
  • 在常数空间中创建 1..N 的随机排列

    我正在寻找枚举固定空间中数字 1 N 的随机排列 这意味着我无法将所有数字存储在列表中 原因是 N 可能非常大 超过可用内存 我仍然希望能够一次遍历这样一个数字的排列 只访问每个数字一次 我知道对于某些 N 可以这样做 许多随机数生成器随机

随机推荐

  • 在 MatSnackBar 中使用“snackBar.openFromComponent()”方法时如何放置操作按钮?

    我使用 MatSnackBar 进行通知 并且希望在小吃栏中有一个操作按钮 使用时如何插入 snackBar openFromComponent method Here is my code https stackblitz com edi
  • Facebook API 用于读取已添加书签的项目

    Facebook 最近添加了一项新功能 允许为有趣的链接添加书签以供以后阅读 保存的链接可在 保存 选项卡中找到 是否有任何 Facebook API 例如 Graph API 用于检索这些保存的项目 用于访问 Facebook 已保存链接
  • 如何进行全局字符串替换而不需要转义所有内容?

    我想用另一个字符串替换字符串中出现的所有模式 例如 让我们将所有 转换为 gt 纯 string replace 仅替换第一个匹配项 replace gives 正则表达式迫使我转义为特殊字符 replace g Pattern is no
  • 如何格式化 Multimarkdown 表格?

    我正在按照以下表格部分下的指南编写 Multimarkdown 表格语法指南 http fletcherpenney net multimarkdown users guide multimarkdown syntax guide 我希望使
  • 将根据数量复制记录的查询

    我正在使用 SQL Server 2008 并寻找一个将根据数量复制记录的查询 表具有 QTY 和 PartNumber 列 需要为每个数量添加一条附加记录 假设零件编号的数量为 3 我需要包含该零件编号的三行 任何帮助将不胜感激 谢谢 测
  • 如何删除注册表中损坏的符号链接

    我正在对注册表进行一些编辑原型 以创建从一个区域到另一个区域的符号链接 我使用了以下代码 HKEY hkFS HKEY hkSOFTWARE DWORD dwDisposition LSTATUS result result RegOpen
  • 比较函数指针

    如何比较 C 中的函数指针 稳定吗 例如 这样的事情是否有效 if pFnc myFnc Do something C 03 5 10 1 expr eq 等于 和 不等于 运算符具有相同的作用 语义限制 转换和结果类型作为关系 运算符 但
  • postgresSQL中NOT IN和NOT EXISTS的区别

    Here s my table 当我使用 NOT IN 执行以下查询时 它给出了 namal 和 Ann SELECT firstname FROM info student info WHERE firstname NOT IN SELE
  • ClickOnce 或 InstallShield 能否安装 SQL Server 或 SQL Server Express?

    可以 ClickOnce 或 InstallShield 设置或配置 SQL Server 或 SQL Server Express 专门添加sa密码 启用命名管道 授予从文件夹读取的权限 添加主数据库 mdf我的客户端应用程序所需的文件
  • Swift SpriteKit SKSpriteNode 的“有时”不出现

    我正在使用 Swift 和 SpriteKit 制作 iOS 但是 我的应用程序运行时遇到不规则现象 有时船舶 SKSpriteNodes 不会出现在屏幕上 有时子弹的 SKSpriteNodes 不会出现 有时一切都显示良好 我将子弹添加
  • AlertDialog 中的资源 ID #0x0

    我添加一个AlertDialog在 kotlin 文件中 但出现异常 btnLogin setOnClickListener view gt login fun login val builder AlertDialog Builder t
  • 如何对整数字符串进行排序?

    我在对具有整数值的字符串列表进行排序时遇到一个奇怪的问题 然而 某些值可以以某些字符作为前缀 e g B1 5 50 A10 7 72 B3 A1 A2 基本上有页码 应该按如下方式排序 A1 A2 A10 B1 B3 5 7 50 72
  • 我们可以让聊天机器人先说问候语,而不仅仅是作为反应吗

    我正在使用 Microsoftt Bot Framework 和 LUIS 认知服务开发聊天机器人 我想要一条初始欢迎消息 例如 你好 用户 你好吗 我的机器人一启动 在 MessageController 中可以做任何事情 public
  • 在 gitlab-ci.yml 上动态设置工件路径/文件夹结构

    我有以下内容gitlab ci yml读取的文件package json使用jq https stedolan github io jq 处理器动态设置工件文件夹的变量名称 类似于 image node latest stages buil
  • Angular 2 - FormGroup ValueChanges 取消订阅

    我有一个带有 ValueChanges 事件的 FormGroup 当用户从组件的路由移动到另一个组件然后返回到该组件时 该事件不会从内存中释放 这意味着 如果用户离开组件然后返回组件 5 次 则 onFormChange 方法会触发 5
  • 在 IE 和 Chrome 中动态加载 jQuery

    我正在创建一个使用 jQuery 的外部小部件 而不是让用户单独包含它 我想检查它是否已加载 如果没有加载 则动态加载它 问题是我需要等到它加载后才能执行脚本的其余部分 这需要 IE 和 FF Chrome 处理不同的事件处理程序 如果我这
  • 帮助处理 Android 库项目中的自定义视图属性

    我在 Android 库项目中有一个自定义 PieTimer 视图 package com mysite android library pietimer public class PieTimerView extends View 我还有
  • Intel 指令文档中未使用 XMM 寄存器 0

    在 Intel x64 手册中 它说 32 位 SSE2 模式下有 XMM 寄存器 0 7 那么为什么 95 使用这些寄存器的指令会跳过 0 并使用 1 4 例如Intel的vol 2手册entry https www felixclout
  • 如何使用CSS为html字符添加边框颜色?

    我目前的任务是在显示某些数据时在不同颜色的 pandas DataFrame 表内创建检查 我找到了以下内容 p I will display span style color green 10004 span p p I will dis
  • 使用数组 eltype 实现采样器

    钩入rand过去更容易 我想我遵循了描述在文档中 https docs julialang org en v1 stdlib Random A simple sampler without pre computed data 1 但它似乎不