gpt4 book ai didi

haskell - 如何生成从每个可能的字符中提取的字符串?

转载 作者:行者123 更新时间:2023-12-02 10:05:52 24 4
gpt4 key购买 nike

目前我正在生成这样的字符串:

arbStr :: Gen String
arbStr = listOf $ elements (alpha ++ digits)
where alpha = ['a'..'z']
digits = ['0'..'9']

但显然这只能从 alpha num 字符生成字符串。我怎样才能从所有可能的字符生成?

最佳答案

CharEnumBounded 类型类的实例,您可以使用 arbitraryBoundedEnum :: (Bounded a, Enum a) => Gen a功能:

import Test.QuickCheck(Gen, arbitraryBoundedEnum, listOf)

arbStr :: Gen String
arbStr = listOf arbitraryBoundedEnum

例如:

Prelude Test.QuickCheck> sample arbStr
""
""
"\821749"
"\433465\930384\375110\256215\894544"
"\431263\866378\313505\1069229\238290\882442"
""
"\126116\518750\861881\340014\42369\89768\1017349\590547\331782\974313\582098"
"\426281"
"\799929\592960\724287\1032975\364929\721969\560296\994687\762805\1070924\537634\492995\1079045\1079821"
"\496024\32639\969438\322614\332989\512797\447233\655608\278184\590725\102710\925060\74864\854859\312624\1087010\12444\251595"
"\682370\1089979\391815"

或者您可以使用 Arbitrary Char 类型类中的任意:

import Test.QuickCheck(Gen, arbitrary, listOf)

arbStr :: Gen String
arbStr = listOf arbitrary

请注意,Char任意 的实现使得 ASCII 字符比非 ASCII 字符更常见(三倍),因此“分布”是不同的。

关于haskell - 如何生成从每个可能的字符中提取的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59329480/

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