c – 偏置随机数发生器的可能方法是什么?
作者:互联网
我建了一个单词生成器,它选择一个长度,然后随机选择字母表的字母来组成单词.
该程序有效,但99%的输出是垃圾,因为它没有观察英语的结构,我正在用x和z得到尽可能多的单词.
我可以选择偏置RNG,以便更频繁地使用普通字母.
我正在使用stl播种的rand().
解决方法:
输出仍然是垃圾,因为偏置随机数生成器不足以构造正确的英语单词.但是偏向rng的一种方法是:
>制作大型英文文本(语料库)中字母出现的直方图.你会得到500’e’,3’x’,1’q’,450’a’,200’b’之类的东西.
>将间隔划分为每个字母获得切片的范围,切片的长度是间隔中出现的数量. a得到[0-450],b [450,650],…,q [3500,3501].
>生成介于0和间隔总长度之间的随机数,并检查其落地位置. 450-650之内的任何数字都会给你一个b,但只有3500给你一个’q’.