Haskell数据类型的非均匀分布



随机包包含一个用于均匀分布类型的类型类Uniform。这适用于以下类型:

data Coin = Heads | Tails

但假设我想对一组具有非均匀分布的事物进行建模,例如,通过添加硬币侧面着陆的可能性:

data Coin = Heads | Tails | Side

现在,我仍然可以在Uniform的实现中使用非均匀分布来实现它,但这将取决于Uniform的隐式规则。

我必须只使用一个独立的函数吗;实际的";分配

这个类型类在RPG的上下文中很有用,在RPG中可以有一些类型

data Rarity = Common | Rare
data DropType = Club | Sword

其中获得CCD_ 4并且它是CCD_。但是,对于RarityDropType,从该类型的所有值的集合中绘制值的概念仍然相同,这就是为什么这对我来说像是类型类的工作

一个选项是使用随机fu,它提供了一个分类分布。举个简单的例子:

import Data.Random
import Data.Random.Distribution.Categorical
import Data.Random.Sample
data Coin = Heads | Tails | Side deriving Show
-- set up distribution, weights don't have to sum to 1
coin :: Categorical Double Coin
coin = fromList [(0.5, Heads), (0.5, Tails), (0.001, Side)]
-- draw a single sample from the distribution
main = sample coin >>= print

相关内容

  • 没有找到相关文章

最新更新