r - 两个不重复的随机数

标签 r random

我想生成一组两个随机数(例如 [1,2]、[3,12]),第一个数字介于 1-12 之间,第二个数字介于 1-4 之间。我知道如何使用以下方法独立采样这两个数字:

sample(1:12, 1, replace = T)
sample(1:4, 1, replace = T)

但不知道如何创建一个系统来确定这两个数字的配对是否已经掷出,如果是,则再次掷出。有什么建议!?

谢谢:)

最佳答案

虽然这不能很好地扩展(如果您需要大规模模拟),您可以这样做:

set.seed(42)
di2 <- sample(setdiff(1:4, di1 <- sample(1:12, size = 1)), size = 1)
c(di1, di2)
# [1] 1 2
  • 内部 (di1) 赋值从 1:12 开始,到目前为止一切顺利。
  • 然后我们从中设置差异 1:4 以便第二次采样只有不等于 di1 的候选;
  • 外部 (di2) 分配样本来自 1:4 没有 di1 如果它在 1-4 内。

虽然不是正确性的权威证明

rand <- replicate(100000, local({ di2 <- sample(setdiff(1:4, di1 <- sample(1:12, size=1)), size = 1); c(di1, di2); }))
dim(rand)
# [1]      2 100000
any(rand[1,] == rand[2,])
# [1] FALSE

关于r - 两个不重复的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69699365/

相关文章:

regex - R tm 在语料库中使用 gsub 替换单词

math - 寻找有趣的公式

android - 随机 TextView 位置

javascript - 如何从数组中选择一个随机字符串并将其分配给一个变量?

r - 为什么我在 Shiny 应用程序上的图像崩溃了?

R:用 httr 模拟复杂形式

r - 在文本中使用 adj 参数时, "large"标签的水平对齐会发生偏移

python - gmailR错误 "Only AF_INET sockets are currently supported on jython"

mysql - 在MySQL中进行特殊排序,3个随机最高分,比所有随机

python - 生成列表,允许重复并符合条件