gpt4 book ai didi

dice - K个N面骰子的不同掷数

转载 作者:行者123 更新时间:2023-12-05 00:51:22 25 4
gpt4 key购买 nike

我需要计算掷 K 个骰子可能产生的不同掷骰数,每个骰子都有 N 个面。我对 roll 的定义是 {1, 1, 2, 3, 4} 等价于 {1, 4, 3, 1, 2} (顺序无关紧要),但不等价于 {1, 1, 3 , 3, 3}(它们不是同一组结果)。例如:Yahtzee 是一个涉及掷 5 个 6 面骰子的游戏——至少在最初,在重新掷骰子之前——因此不同掷骰的数量是 252。当 N = K 时的情况导致 OEIS sequence A001700

如果我没记错的话,这是由“(N-1+K) 选择 (N-1)” 给出的,或者等效地,“(N+K-1) 选择 K”,即 K ! <: K + N J. 这让我想到了四种不同的默认表示:

  • d =: ([ ! [: <: +) 。简单的火车,没有括号,但我需要使用上限。
  • d =: ([ (! <:) +) 。没有上限,但用括号括住内部 Hook 。
  • d =: (] !&<: +) 。只有三个动词序列,但使用 Compose。它使用 (<: N) ! <: K + N 版本。
  • d =: (([ ! +) * ] % +) 。这个将“C(N+K-1, K)”重写为“C(N+K, K) * N/(N+K)”。它更难看,但在 0 个骰子有 0 个面的情况下,它给出 0 而不是 1,这可以说是一个不那么荒谬的答案。

以下哪个是最“J-ish”的解决方案?

此外,所有这些的一元大小写都是无意义的:前三个为 1 0 0 0 0 ...,第四个为 0 1 1 1 ...。这个动词的一个更合乎逻辑的单子(monad)是反身的,如 d~ 所给出的,那么将这个动词定义为 (d~ : d) 会更好吗?

最佳答案

我的偏好是:

d =: ([ (! <:) +)

并为二元添加一个单元选项

d =: d~ : ([ (! <:) +) NB. 4 d 5 ( 4 rolls of 5 sided dice : 70 possible combinations)

如果我以后偶然发现它,我会添加评论,包括示例参数和预期目的,以节省我的时间。

当然,如果 0 d 0 返回 0,最终版本将是选择,即使它看起来有点复杂。

关于dice - K个N面骰子的不同掷数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19149608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com